Javascript高级程序设计(笔记)–14章表单脚本

  • 表单对应的则是 HTMLFormElement,类型,HTMLFormElement 继承了 HTMLElement
    • acceptCharset:服务器能够处理的字符集;等价于 HTML 中的 accept-charset 特性
    • action:接受请求的 URL;等价于 HTML 中的 action 特性。
    • elements:表单中所有控件的集合( HTMLCollection )
    • enctype:请求的编码类型;等价于 HTML 中的 enctype 特性
    • length :表单中控件的数量。
    • method :要发送的 HTTP 请求类型,通常是 “get” 或 “post” ;等价于 HTML 的 method 特性
    • name :表单的名称;等价于 HTML 的 name 特性
    • reset() :将所有表单域重置为默认值。
    • submit() :提交表单
    • target :用于发送请求和接收响应的窗口名称;等价于 HTML 的 target 特性

获取form表单

  • document.forms:获取当前页面所有form,通过索引或使用name来获取
    • var firstForm = document.forms[0] //取得页面中的第一个表单
    • var myForm = document.forms[“form2”] //取得页面中名称为”form2″的表单
  • 在较早的浏览器或者那些支持向后兼容的浏览器中,会把每个设置了 name 特性的表单作为属性保存在 document 对象中
    • document.form2 可以访问到名为 “form2的表单
    • 不推荐,可能未来浏览器不支持

提交表单

按钮提交

  • <input type=”submit” value=”Submit Form”>//通用提交按钮
  • <button type=”submit“>Submit Form </button>//提交按钮
  • <input type=”image” src=”graphic.gif”>//图像按钮
  • 表单中存在上面列出的任何一种按钮,那么在相应表单控件拥有焦点的情况下按回车就可以提交表单(textarea按钮例外,文本区中回车会换行),没有提交回车无反应
  • 以上方式提交表单时,浏览器会在将请求发送给服务器之前触发 submit 事件
    • 阻止这个事件的默认行为就可以取消表单提交(prevetnDefault)
    • 在submit时间中验证表单数据,并据以决定是否允许表单提交

编程提交

  • formDom.submit();
    • 这种方式无需表单包含提交按钮,任何时候都可以正常提交表单
    • 不会触发 submit 事件因此要记得在调用此方法之前先验证表单数据

注意:提交表单可能被用户重复提交表单

重置表单

按钮重置

  • <input type=”reset” value=”Reset Form”>
  • <button type=”reset”>Reset Form</button>
  • 单击重置按钮时,会触发reset事件,利用这个机会,可能取消重置操作(preventDefault取消事件默认行为则取消重置操作)

编码重置

  • formDom.reset();
  • 调用 reset() 方法会像单击重置按钮一样触发 reset 事件

表单字段

  • 使用element属性–
    • formDom.element[0] //第一个表单控件
    • formDOm.element[‘name’]//返回所有名字为name的表单控件

表单字段的属性

  • disabled :布尔值,表示当前字段是否被禁用。
  • form :指向当前字段所属表单的指针;只读
  • name :当前字段的名称。
  • readOnly :布尔值,表示当前字段是否只读
  • tabIndex :表示当前字段的切换(tab)序号
  • type :当前字段的类型,如 “checkbox” 、 “radio” ,等等。
    • 在input/button中可动态修改,select只读
    • select值为:’select-one’/’select-multiple’
  • value :当前字段将被提交给服务器的值,对文件字段来说,这个属性是只读的(如文件在计算机中的路径)
  • 除了form属性外,都可以js动态修改

表单字段的方法

  • focus()//将浏览器的焦点设到表单字段即激活表单字段,使其可以响应键盘事件
    • document.forms[0].elements[0]..focus();//监听onload事件
    • focus的表单如果为hidden、或隐藏等,会导致异常
    • html5定义了autofocus属性,自动关注焦点–Boolean类型 :兼容:ff4+,sf5+,chrome&opera9+,不支持的属性返回值为空字符串
  • blur()
  • change():
    • 对于 input/textarea元素,在它们失去焦点且 value 值改变时触发