文件中还要包含下面这个提供验证功能的函数:
function validateForm(theForm){// 若验证通过则返回true var elArr = theForm.elements; // 将表单中的所有元素放入数组 for(var i = 0; i < elArr.length; i++)
with(elArr[i]){ // 对于表单中的每一个元素... var v = elArr[i].validator; // 获取其validator属性
if(!v) continue; // 如果该属性不存在,忽略当前元素 var thePat = PatternsDict[v]; // 选择验证用的正则表达式 var gotIt = thePat.exec(value); // 用正则表达式验证elArr[i]的值 if(!gotIt){
alert(name + \输入值与正则表达式不匹配(\—— \)\false;}
} return true; }
validateForm函数检查每一个表单元素的validator属性,若该属性不存在,脚本忽略此元素并返回循环的开头。否则,从PatternDict中获得当前元素的匹配模式。每一个正则表达式都有对应的RegExp对象,RegExp对象的exec()方法在参数与它所关联的正则表达式不匹配时返回null——此时脚本显示警告对话框。在实际应用场合,为提高效率可以在执行验证之前将这些正则表达式编译。某些输入域可能需要除了简单匹配之外更为复杂的验证。因此,除了模式库之外,还可以为常用的验证任务建立一个函数库。
设上述验证模式文件为valPatterns.js,将它包含到所有必需用它来验证输入的页面中,然后为每个输入框指定合适的validator属性即可。下面是应用上述valPatterns.js的一个完整示例:
< HTML >< HEAD >
< TITLE > formVal.HTM < /TITLE > < SCRIPT src=\ < /SCRIPT > < SCRIPT >
function showForm(theForm){
alert(\表单:\已经提交\ }
< /SCRIPT >< /HEAD >
< BODY >< P >用正则表达式库验证表单示例.< /P >
< FORM id = \ Action = \ 图书编号:
< INPUT TYPE=\ name=\BR > 时 间 值:
< INPUT TYPE=\ 单击按钮提交表单:
< INPUT TYPE = \ < /FORM >
< /BODY >< /HTML >