14.1 表单元素

 HTMLFormElement  extends HTMLElement

  表单类型,从上面可以看出与其他HTML元素具有相同的默认属性。不过HTMLFormElement也有它自己独有的属性和方法。

acceptCharset 服务器处理的字符集
action    接受请求的url   
elements 表单所有控件的集合(HTMLCollection)
enctype 请求编码类型; 等价HTML中的enctype
length 表单中控件的数量
method 要发送的HTTP请求类型,通常是 get 或 method
name 表单的名称
   
Function  
reset() 将所有表单重置为默认值
submit() 提交表单
target

用于发送请求和接收响应的窗口名称

  • 获取表单

方式一:

getElementById()

方式二:forms

document.forms

  

  • 提交表单 

  第一类方式:用户单击表单按钮或图片按钮,就会提交表单。 使用input 、button 都可以定义提交按钮

  

<!--通用-->
<input type="submit" value="Submit Form">
<!--自定义-->
<button type="submit">Submit Form</button>
<!--图像按钮-->
<input type="image" value="**.gif">

已这种方式提交的表单时,浏览器会在将请求发送服务器之前触发submit事件。这样我们就有验证表单数据,并据以决定是否允许提交表单。 阻止事件的默认行为就可以取消表单提交。

  

1     var form = document.getElementById("form");
2     form.addHandler(form,"submit",function(evennt){
3         //取得事件对象
4         event = EventUtil.getEvent(event);
5         //阻止more事件
6     event.preventDefault();
7     });



  第二类:在JavaScript中,以编程方式调用 submit()方法也可以提交

    注意:通过这种方式提交的表单,并不会触发submit事件。所以在调用该方法之前应该先对表单进行处理。

 1     var form = document.getElementById("form");
 2     var btn = document.getElementById("btn");
 3     EventUtil.addHandler(form,"submit",function(evennt){
 4         //取得事件对象
 5         event = EventUtil.getEvent(event);
 6         //阻止more事件
 7         event.preventDefault();
 8         alert("进入submit事件中");
 9     });
10     EventUtil.addHandler(btn,"click",function(evennt){
11         alert("进入执行点击");  //进入执行点击
12         form.submit();
13     });

    给表单中一个元素添加点击事件,用调用方法的形式提交表单,只执行了click处理函数, submit处理函数并未执行。

  ★★★★★★

  提交表单时可能出现的最大问题,就是重复提交表单。在第一个提交表单后,如果长时间没有反应,用户可能会变得不耐烦。这时可能会返回点击提交按钮。

  解决这问题最好常用的方式:

    ★★★:在第一次提交表单后就禁用提交按钮。

     ★★★:利用onsubmit 事件处理程序取消后续的表单提交操作。

  • 重置表单 

    重置表单就是恢复表单元素到页面刚刚加载完毕时的初始值。如果某个字段的初始值为空,就会恢复为空;默认值则恢复默认值

    与重置相关的一个事件: reset 事件,该事件与submit有点区别,不管用那种方式提交都会触发 reset事件。

1     var form = document.getElementById("form");
2     EventUtil.addHandler(form,"reset",function(evennt){
3         //取得事件对象
4         event = EventUtil.getEvent(event);
5         //阻止more事件
6         event.preventDefault();
7         alert("进入reset事件中");
8     });

当出现这样情况时会出现错误:不能使用关键之作为其 id  或 name 的名称

1 <form  id="form">
2     <input value="" type="text">
3     <input type="reset" id="reset" value="重置">
4     <input type="submit" value="submit">
5     <button type="button" id="btn">重置</button>
6 </form >
 1     var form = document.getElementById("form");
 2     var btn = document.getElementById("btn");
 3     EventUtil.addHandler(form,"reset",function(event){
 4         //取得事件对象
 5         event = EventUtil.getEvent(event);
 6         //阻止more事件
 7         event.preventDefault();
 8         alert("进入reset事件中");
 9     });
10     EventUtil.addHandler(btn,"click",function(event){
11         //alert("进入执行点击");  //进入执行点击
12         form.reset()
13     });

  

  • 表单字段

    可以像访问页面中的元素一样,使用原生DOM方法访问表单元素。每个表单都有elements属性,该属性是表单中所有元素的集合。

  elements集合 

      是一个有序列表,其中包含着表单中的所有字段,例如 input textarea button fieldset 。 每个表单字段在elements集合中顺序, 与它们出现在标记中顺序相同,可以按照位置或name特性来访问。

   

  

  

  

原文地址:https://www.cnblogs.com/czhyuwj/p/5716537.html