表单字段
避免多次提交表单
1 2 3 4 5 6 7 8 9 10 
  | EventUtil.addHandler(form, "submit", function(event){     event = EventUtil.getEvent(event);     var target = EventUtil.getTarget(event);     //取得提交按钮     var btn = target.elements["submit-btn"];     //禁用它     btn.disabled = true; }); 
  | 
 
HTML5 为表单字段新增了一个 autofocus 属性。在支持这个属性的浏览器中,只要设置这个属性,不用javascript 就能自动把焦点移动到相应字段。
1 
  | <input type="text" autofocus> 
  | 
 
为了保证前面的代码在设置 autofocus 的浏览器中正常运行,必须先检查是否设置了改属性,如果设置了,就不用再调用 foucus() 了。
1 2 3 4 5 6 
  | EventUtil.addHandler(window, "load", function(event){     var element = document.forms[0].elements[0];     if (element.autofocus != true) {         element.focus();     } }); 
  | 
 
选择文本
跨浏览器取得选择文本
1 2 3 4 5 6 7 
  | function getSelectedText(textbox) {     if (typeof textbox.selectionStart == "number") {         return textbox.value.substring(textbox.selectionStart,textbox.selectionEnd);     } else if (document.selection) {  //IE 8-=         return document.selection.createRange().text;     } } 
  | 
 
跨浏览器选择部分文本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 
  | function selectText(textbox, startIndex, stopIndex) {     if (textbox.setSelectionRange) {         textbox.setSelectionRange(startIndex, stopIndex);     } else if (textbox.createTextRange) {    //IE 8-=         var range = textbox.createTextRange();         range.collapse(true);         range.moveStart("character", startIndex);         range.moveEnd("character", stopIndex - startIndex);         range.select();     }     textbox.focus(); } textbox.value = "Hello world!" //选择所有文本 selectText(textbox, 0, textbox.value.length);    //"Hello world!" //选择前3个字符 selectText(text, 0, 3);    //"Hel" //选择第 4 到第 6 个字符 selectText(textbox, 4, 7); //"o w" 
  | 
 
选择部分文本的技术在实现高级文本输入框时很有用,例如提供自动完成建议的文本框就可以使用这种技术。
过滤输入
屏蔽字符
下列代码只允许用户输入数值
1 2 3 4 5 6 7 8 9 
  | 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)) && charCode > 9 && !event.ctrlKey) {   //Safari 3-         EventUtil.preventDefault(event);     } }); 
  | 
操作剪贴板
1 2 3 4 5 6 7 8 9 10 11 12 
  | getClipboardText: function(event) {     var clipboardData = (event.clipboardData || window.clipboardData);     return clipboardData.getData("text"); }, setClipboardText: function(event){     if (event.clipboardData) {         return event.clipboardData.setData("text/plain", value);     } else if (window.clipboardData) {         return window.clipboardData.setData("text", value);     } }, 
  | 
 
在需要确保黏贴到文本框中的文本中包含某些字符,或者符合某种格式要求时,能够访问剪贴板是非常有用的。例如,如果一个文本框只接受数值,那么久必须检测黏贴过来的值。
1 2 3 4 5 6 7 8 
  | EventUtil.addHandler(textbox, "paste", function(event){     event = EventUtil.getEvent(event);     var text = EventUtil.getClipboardText(event);     if(!/^\d*$/.test(text)) {         EventUtil.preventDefault(event);     } }); 
  | 
 
自动切换焦点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 
  | (function(){     function tabForward(event) {         event = EventUtil.getEvent(event);         var target = EventUtil.getTarget(event);         if (target.value.length == target.maxLength) {             var form = target.form;             for(var i=0, len=form.elements.length; i < len; i++) {                 if (form.elements[i] == target) {                     if (form.elements[i+1]) {                         form.elements[i+1].focus();                     }                     return;                 }             }         }     } })(); var textbox1 = document.getElementById("txtTel1"); var textbox2 = document.getElementById("txtTel2"); var textbox3 = document.getElementById("txtTel3"); EventUtil.addHandler(textbox1, "keyup", tabForward); EventUtil.addHandler(textbox2, "keyup", tabForward); EventUtil.addHandler(textbox3, "keyup", tabForward); 
  | 
 
不过这些代码只适用于前面给出的标记,而且没有考虑隐藏字段。