基于JavaScript表单脚本(详解)(2)

//避免多次提交表单  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 属性的值如下表所列。

基于JavaScript表单脚本(详解)

共有的表单字段方法 :

每个表单字段都有两个方法: 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">

想要达到自动切换焦点的效果,可以这样做:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wywszw.html