js014-表单脚本
js014-表单脚本
本章内容:
理解表单
文本框验证与交互
使用其他表单控制
14.1 表单的基础知识
在HTML中,表单时由<form>元素来表示的,在JS中,表单对应的时HTMLFormElement类型。HTMLFormElement继承了HTMLElement,所以它与其他HTML元素具有想的的默认属性。它还有自己独特的属性和方法:
|
属性/方法 |
说明 |
|
acceptCharset |
服务器能够处理的字符集;等价于HTML的accept-cahrset特性 |
|
action |
接受请求的URL;等价于HTML的action特性 |
|
elements |
表单中所有控件的集合(HTMLCollection) |
|
enctype |
请求的编码类型;等价于HTML的enctype特性 |
|
length |
表单中控件的数量 |
|
method |
要发送的HTTP类型,通常时“get”或“set”;等价于HTML的method特性 |
|
name |
表单的名称;等价于HTML的name特性 |
|
reset() |
将所有表单域重置为默认值 |
|
submit() |
提交表单 |
|
target |
用于发送请求和接收相应的窗口名称等价于HTML的target特性 |
取得<form>元素引用的方式有很多,最常用的是:getElementBId()
var form =
document.getElementBId("lal-Alice");
//取得<form>元素的引用
14.1.1 提交表单
用户单击提交按钮或图像按钮时,就会提交表单,使用<input>或<button>都可以定义提交表单。只要将type特性值设置为“submit”即可。图像按钮是将<input>的type值设为“image”来定义的。
|
通用提交按钮 |
<input |
|
自定义提交按钮 |
<button |
|
图像提交按钮 |
<input |
阻止提交表单
|
var form = EventUtil.addHandler(form, //取得事件对象 event = EventUtil.getEvent(event); //阻止默认事件 EventUtil.preventDefault(event); }); |
只要表单中有提交按钮,在相应表单空间拥有焦点的情况下,只要打回车键就可以提交表单(textarea是一个例外,在文本区中打回车会换行)。如果表单里没有提交按钮,回车不会提交表单。
在JS中以编程方式调用submit()方法也可以提交表单,而且这种方式无需包含表单提交按钮,任何时候都可以提交表单。
|
var form = //提交表单 form.submit(); |
14.1.2 重置表单
type特性值为:reset的<input>或<button>都可以创建重置按钮。如下
|
通用重置按钮 |
<input |
|
自定义重置按钮 |
<button |
阻止表单重置
|
var form = EventUtil.addHandler(form, //取得事件对象 event = EventUtil.getEvent(event); //阻止默认事件 EventUtil.preventDefault(event); }); |
在JS中以编程方式调用reset()方法也可以提交表单,而且这种方式无需包含表单提交按钮,任何时候都可以提交表单。
|
var form = //提交表单 form.reset(); |
14.1.3 表单字段
每个表单都包含有elements属性,该属性是表单中所有表单元素的结合,这个elements集合是一个有序列表,其中包含着表单中的所有字段,例如<input>、<textarea>、<button>、<fieldset>。每个表单字段在elements集合中的顺序与他们出现在标记中的顺序相同,可以按照位置和name特性来访问它们。
|
var form = //取得表单中的第一个字段 var field1 = form.elements[0]; //取得名为textbox的字段 var field2 = //取得表单中包含的字段的数量 var fieldCount = |
1、共有的表单字段属性
除了<fieldset>以外,所有的表单字段都拥有形同的一组属性。因为<input>类型可以表示多种表单字段,所以有些属性只适用于某些字段,但是还有一些是共用的。共用的表单字段属性如下:
|
属性 |
说明 |
|
disabled |
布尔值,表示当前字段是否禁用 |
|
form |
指向当前字段所属表单的指针,只读 |
|
name |
当前字段的名称 |
|
readOnly |
布尔值,表示当前字段是否只读 |
|
tabIndex |
表示当前字段的切换(tab)序号 |
|
type |
表示当前字段类型,如“checkbox”“radio”等 |
|
value |
当前字段被提交个服务器的值。只读 |
除form属性以外,可以通过JS修改其他任何属性
除了<fieldset>以外,所有的表单字段都拥有type属性
2、共有表单的字段方法
每个表单字段都有两个方法:
|
focus() |
用于将浏览器焦点设置到表单字段,,即激活表单字段,使其可以相应键盘事件 |
|
blur() |
用于从元素中移走焦点 |
3、共有的表单字段事件
除了支持鼠标、键盘、更改和HTML事件之外,所有表单字段都支持下列3个事件:
|
事件 |
触发条件 |
|
blur |
当前字段失去焦点时 |
|
change |
对于<input><textarea>元素,在他们拾取焦点且value值发生改变时触发,对于<slelect>元素,在其改变选项是触发 |
|
focus |
当前字段获得焦点时触发 |
14.2 文本框脚本
两种文本框:
|
<input> |
单行文本框。type = “text”,size指定文本框中能够显示的字符数,value特性设置文本框初始值,maxlength特性指定文本框可以接收的最大字符数。如 <input |
|
<textarea> |
多行文本框。rows和cols特性指定文本框的字符行数和列数(与input的size类似),初始值必须放在<textarea>和</textarea>之间 如: <textarea rows="25" |
不要使用setAttribute()设置<input>元素的value特性,也不要去修改<textarea>元素的第一个子节点。原因:对value属性修改,不一定会反映在DOM中,所以处理文本框时最好不要使用DOM 方法。
14.2.1 选择文本
以上两种文本都支持select()方法,该方法用于选择文本框中所有文本。不接受参数。可以在任何时候被调用。
1、选择(select)事件
在选择文本框是,就会触发select事件。在调用select()方法是也会触发select事件:
|
var textbox = EventUtil.addHandler(textbox, var alert("text slected" + }); |
2、取得选择的文本
添加两个属性:selectionStart和selectionEnd。这两个属性中保存的是基于0的数值,表示文本的范围(开头和结尾的偏移量)
|
function return } |
3、选择部分文本
setSelectionRange()方法。除了select()方法之外,所有的文本框都有一个setSelectionRange()方法,接收两个参数:选择第一个字符的索引和要选择的
一个祖父之后的字符的索引。
|
textbox.value = //选择所有文本 textbox.setSelectionRange(0, //选择前3个字符 textbox.setSelectionRange(0, //选择第4到第6个字符 textbox.setSelectionRange(4, |
14.2.2 过滤输入
1、屏蔽字符
通过代码屏蔽所有按键操作
|
EventUtil.addHandler(textbox, event = EventUtil.getEvent(event); EventUtil.preventDefault(event); }); |
以下代码只允许用户输入数值:
|
EventUtil.addHandler(textbox, event = EventUtil.getEvent(event); var targe = EventUtil.getTarget(event); var cahrCode = if EventUtil.preventDefault(event); }; }); |
2、操作剪贴板
以下为6个剪贴板事件:
|
事件 |
触发场景 |
|
boforecopy |
在发生复制操作前触发 |
|
copy |
在发生复制操作时触发 |
|
beforecut |
在发生剪切操作前触发 |
|
cut |
在发生剪切操作时触发 |
|
beforepaste |
在发生黏贴操作前触发 |
|
paste |
在发生黏贴操作时触发 |
14.2.3 自动切换焦点
|
//自动切换焦点 (function(){ function tabForwafd(event){ event = var target = if (target.value.length == var form = target.form; for (var i = 0; len = if form.elements[i+1].focus(); } return; } } } var textbox1 = var textbox2 = document.getElementById("texttel2"); var textbox3 = EventUtil.addHandler(textbox1, EventUtil.addHandler(textbox2, EventUtil.addHandler(textbox3, }) |
14.2.4 HTML5约束验证API
1、必填字段
指定required属性
|
<input |
2、其他输入类型
|
<input <input |
3、数值范围
|
<input |
4、输入模式
新增了pattern属性,该属性是一个正则表达式,用于匹配文本框中的值
|
<input |
5、检测有效性
checkValidity()方法可以检测表单中某个字段是否有效。
6、禁用验证
通过设置novalidate属性可以告诉表单不进行验证。
声明:该博客由http://www.cnblogs.com/lal-fighting/原创发表,未经作者允许,不得私自转载抄袭!!!
js014-表单脚本的更多相关文章
- js-DOM2,表单脚本
DOM2: 1.DOM2中:创建一个完整的HTML文档 document.implementation.createHTMLDocument("new Doc"); alert(h ...
- 表单脚本api_contenteditable
<html> <head></head> <body> <form> <div contenteditable>ssadas&l ...
- JavaScript高级程序设计第14章表单脚本 (学习笔记)
第十四章 表单脚本 1.阻止默认表单提交 1.提交表单数据 1.使用type=submit提交按钮 2.使用submit():方法 注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有 ...
- JavaScript基础笔记(十)表单脚本
表单脚本 一.表单基础知识 JavaScript中表单对应的是HTMLFormElement类型,该类型继承自HTMLElement类型. 通过document.forms可以获得所有表单元素,通过数 ...
- JavaScript高级程序设计学习笔记--表单脚本
提交表单 用户单击提交按钮或图像按钮时,就会提交表单.使用<input>和<button>都可以定义提交按钮,只要将其type特性的值设置为"submit" ...
- 《JavaScript高级程序设计》笔记:表单脚本(十四)
表单的基础知识 在HTML中,表单是由<form>元素来表示的,而在JS中,表单对应的是HTMLFormElement类型.HTMLFormElement继承了HTMLElement,因而 ...
- javascript权威指南第14章 表单脚本示例代码
HTML部分 <!DOCTYPE html> <html> <head> <title></title> </head> < ...
- JavaScript高级程序设计--表单脚本
1.提交表单 submit onsubmit 2.表单的change事件 input与textarea元素的change事件触发在,他们失去焦点且value值改变的时候 select的change ...
- mysql创建表单脚本
如图所示,T_SENSOR_QC_CONFIG_GLOBAL_ITEM表通过外键CATEGORY_ID连接T_SENSOR_QC_CONFIG_CAT表.COMMENT为字段或表单添加注释.
- JS学习笔记7_表单脚本
1.获取表单及表单元素引用的方式 var mForm = document.forms[formName];获取表单引用 mForm.elements[elemName]获取表单元素,如有同名的,则得 ...
随机推荐
- JAVA内嵌数据库H2的使用入门
H2数据库是开源的,非常适合做嵌入式数据库使用,尤其用java编码的时候. H2的优势: 1.h2采用纯Java编写,因此不受平台的限制. 2.h2只有一个jar文件,十分适合作为嵌入式数据库试用. ...
- 【Spring】构建Springboot项目 实现restful风格接口
项目代码如下: package hello; import org.springframework.boot.SpringApplication; import org.springframework ...
- 标准Web系统的架构分层
标准Web系统的架构分层 – 转载请注明出处 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求 ...
- Git error on commit after merge - fatal: cannot do a partial commit during a merge
Git error on commit after merge - fatal: cannot do a partial commit during a merge this answer is : ...
- 【POJ 2187】Beauty Contest 凸包+旋转卡壳
xuán zhuǎn qiǎ ké模板题 是这么读吧(≖ ‿ ≖)✧ 算法挺简单:找对踵点即可,顺便更新答案. #include<cstdio> #include<cstring&g ...
- 绑定: 通过 Binding 绑定对象, 通过 x:Bind 绑定对象, 通过 Binding 绑定集合, 通过 x:Bind 绑定集合
背水一战 Windows 10 之 绑定 通过 Binding 绑定对象 通过 x:Bind 绑定对象 通过 Binding 绑定集合 通过 x:Bind 绑定集合 示例1.演示如何通过 Bindin ...
- wow.js使用方法
近日,在做项目中,需要做到滚动条滑到某个位置时,才能显示动画,网上查询到有个wow.js可以达到要求,现在把使用方法做如下总结: wow.js演示地址 wow.js的github地址 使用方法真是超简 ...
- 【bzoj1178】 Apio2009—CONVENTION会议中心
http://www.lydsy.com/JudgeOnline/problem.php?id=1178 (题目链接) 题意 给出n个区间,问在区间两两不相交的情况下最多能选出多少区间,并输出字典序最 ...
- UOJ20 解方程
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- HTML/HTML5/CSS/CSS3教程速查手册地址以及如何快速直到webkit的用法
http://www.w3school.com.cn/ http://www.runoob.com/ 不过上面这两个都是标准的CSS和CSS3教程,针对一些类似-webkit-内核的样式没有公布. 下 ...