//避免多次提交表单 EventUtil.addHandler(form, "submit", function(event){ event = EventUtil.getEvent(event); var target = EventUtil.getTarget(event); //取得提交按钮 var btn = target.elements["submit-btn"]; //禁用它 btn.disabled = true; });
除了<fieldset>之外,所有表单字段都有 type 属性。对于<input>元素,这个值等于 HTML 特性 type 的值。对于其他元素,这个 type 属性的值如下表所列。
共有的表单字段方法 :
每个表单字段都有两个方法: focus()和 blur()。使用 focus()方法,可以将用户的注意力吸引到页面中的某个部位。例如,在页面加载完毕后,将焦点转移到表单中的第一个字段。
EventUtil.addHandler(window, "load", function(event){ /*给window绑定一个监听事件,放页面加载完成,光标自动对准在指定的表单字段*/ document.forms[0].elements[0].focus(); });
HTML5 为表单字段新增了一个 autofocus 属性。在支持这个属性的浏览器中,只要设置这个属性,不用 JavaScript 就能自动把焦点移动到相应字段。
例如:
<input type="text" autofocus>
与 focus()方法相对的是 blur()方法,它的作用是从元素中移走焦点:
document.forms[0].elements[0].blur();
change事件:对于<input>和<textarea>元素,在它们失去焦点且 value 值改变时触发;对于
<select>元素,在其选项改变时触发。
二,文本框脚本
在 HTML 中,有两种方式来表现文本框:一种是使用<input>元素的单行文本框,另一种是使用<textarea>的多行文本框。
选择文本:
在文本框获得焦点时选择其所有文本,这是一种非常常见的做法 ,实现代码如下:
EventUtil.addHandler(textbox, "focus", function(event){ event = EventUtil.getEvent(event); var target = EventUtil.getTarget(event); target.select(); });
取得选择的文本 :
虽然通过 select 事件我们可以知道用户什么时候选择了文本,但仍然不知道用户选择了什么文本。HTML5 通过一些扩展方案解决了这个问题,以便更顺利地取得选择的文本。该规范采取的办法是添加两个属性: selectionStart 和 selectionEnd。
function getSelectedText(textbox){ return textbox.value.substring(textbox.selectionStart, textbox.selectionEnd); }
IE9+、 Firefox、 Safari、 Chrome 和 Opera 都支持这两个属性。 IE8 及之前版本不支持这两个属性,而是提供了另一种方案。 IE8 及更早的版本中有一个 document.selection 对象,其中保存着用户在整个文档范围内选择的文本信息
function getSelectedText(textbox){ if (typeof textbox.selectionStart == "number"){ return textbox.value.substring(textbox.selectionStart, textbox.selectionEnd); } else if (document.selection){ return document.selection.createRange().text; } }
过滤输入:
我们经常会要求用户在文本框中输入特定的数据,或者输入特定格式的数据。
EventUtil.addHandler(textbox, "keypress", function(event){ event = EventUtil.getEvent(event); var target = EventUtil.getTarget(event);//取得输入键的字符编码 var charCode = EventUtil.getCharCode(event); if (!/\d/.test(String.fromCharCode(charCode))){ //将字符编码转换到字符,并用正则表达式检测是否符合匹配 EventUtil.preventDefault(event); } });
以上代码实现对表单字段中输入的数据的控制,只允许输入数字
有时我们想要屏蔽哪些非数字的键,而不像屏蔽哪些基本键和按下ctrl键的操作。
自动切换焦点:
使用 JavaScript 可以从多个方面增强表单字段的易用性。其中,最常见的一种方式就是在用户填写完当前字段时,自动将焦点切换到下一个字段。为增强易用性,同时加快数据输入,可以在前一个文本框中的字符达到最大数量后,自动将焦点切换到下一个文本框。
比如对于下面的表单字段而言:
<input type="text" maxlength="3"> <input type="text" maxlength="3"> <input type="text" maxlength="4">
想要达到自动切换焦点的效果,可以这样做: