|
|
||||
首页
文学作品 网页设计 平面设计 程序设计 考试认证 基础办公 QQ资源 服务器架设 网站运营 网页资源
|
|
|
| 汉南在线 → 网页设计 → JavaScript脚本 | |||||||||||
本文是“表单验证方式的通用化”的续篇。 在上文的表单验证解决方案中,有这样几个问题: 1。页面中存在自定义标签,这通不过W3C验证。 2。自定义标签不能写在Struts标签中,造成此解决方案在Struts工程中不适用。 3。验证的方式和页面内容混合在一起,没有分开。 4。原反馈信息span的id必须符合一定规范,这是额外的负担。 为了解决这些问题,我采取了如下步骤: 1。建立一种数据结构,让它容纳文本框id,反馈span的id,验证正则表达式,是否必须输入等四个信息。这样页面就不会混杂自定义标签,w3c验证和struts标签不支持的问题就解决了。 2。建立一个包含多个这种数据结构的数组,其中元素与要验证的文本域一一对应。此数组在需要验证时建立。这里虽然要多些一些JS代码,但验证信息更集中更容易修改了。 3。需要验证时取得数组元素,挨个验证即可,需要的信息都可以从数组元素中取得。整个过程可以库化通用化,页面不需要写验证。 如此做完后,我认为原先的问题基本得到解决了。下面请看具体代码: 1。页面代码。 <!-- 调用通用验证函数checkForm --> <form action="ShowPage" onsubmit="return checkForm(getCheckArray());"> <!-- 内置表格开始 --> <table width=660 align=center border=0> <tbody> <tr> <td width=70>姓名:</td> <td> <input type="text" name="name" onfocus="this.style.backgroundColor='#e6e6e6'" onblur="this.style.backgroundColor='#ffffff'"/> <font color=red> (必填)</font> <span id="nameMsg" class="feedbackHide">用户名必须输入两到三位汉字</span> </td> </tr> <tr> <td width=70>职位:</td> <td> <input type="text" name="title" onfocus="this.style.backgroundColor='#e6e6e6'" onblur="this.style.backgroundColor='#ffffff'" /> <font color=red> (必填)</font> <span id="titleMsg" class="feedbackHide">员工职位必须是二到五位汉字</span> </td> </tr> <tr> <td width=70>年龄:</td> <td> <input type="text" name="age" onfocus="this.style.backgroundColor='#e6e6e6'" onblur="this.style.backgroundColor='#ffffff'" /> <span id="ageMsg" class="feedbackHide">员工年龄在20到59之间</span> </td> </tr> <tr> <td width=70>密码:</td> <td> <input type="password" name="pswd" onfocus="this.style.backgroundColor='#e6e6e6'" onblur="this.style.backgroundColor='#ffffff'" /> <font color=red> (必填)</font> <span id="pswdMsg" class="feedbackHide">员工密码必须是英语或数字</span> </td> </tr> <tr> <td width=70>邮件:</td> <td> <input type="text" name="email" onfocus="this.style.backgroundColor='#e6e6e6'" onblur="this.style.backgroundColor='#ffffff'" /> <font color=red> (必填)</font> <span id="emailMsg" class="feedbackHide">输入必须符合邮件地址格式,如XX@XXX.XX</span> </td> </tr> <tr> <td></td> <td><input type="submit" value="录入"/></td> </tr>![]() </tbody> </table> </form> <!-- 内置表格结束-->2。验证时创建数组的函数,注意其与页面元素的对应关系。 <script LANGUAGE="JavaScript"> <!--![]() /**//** * 取得需要验证的文本框控件数组 * */![]() function getCheckArray() { var arr=new Array(); arr[0]=createToBeCheckedObj("name","nameMsg","[\\u4E00-\\u9FA5]{2,3}","true"); arr[1]=createToBeCheckedObj("title","titleMsg","[\\u4E00-\\u9FA5]{2,5}","true"); arr[2]=createToBeCheckedObj("age","ageMsg","[2-5]{1}[0-9]{1}","false"); arr[3]=createToBeCheckedObj("pswd","pswdMsg","\\w+","true"); arr[4]=createToBeCheckedObj("email","emailMsg","\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\.\\w+([-.]\\w+)*","true");![]() return arr; } //--> </script>3。创建验证数据结构的函数 ![]() /**//** * Check a object will be checked when sbmit a form */![]() function createToBeCheckedObj(textboxName,msgSpanId,validChar,isRequired) { // Create the object will be checked var toBeCheckedObj=new Object; // Set propertied to toBeCheckedObj toBeCheckedObj.textboxName=textboxName; toBeCheckedObj.msgSpanId=msgSpanId; toBeCheckedObj.validChar=validChar; toBeCheckedObj.isRequired=isRequired; // create a method of toBeCheckedObj![]() toBeCheckedObj.showProperties=function() { alert("TextboxName="+this.textboxName+" MsgSpanId="+this.msgSpanId+" ValidChar="+this.validChar+" IsRequired"+this.isRequired); } // return the object will be checked return toBeCheckedObj; }4。验证函数 ![]() ![]() /**//** * Check form */![]() function checkForm(toBeCheckedObjArray) { ![]() for(var i=0;i<toBeCheckedObjArray.length;i++) { var toBeCheckedObj=toBeCheckedObjArray[i]; // toBeCheckedObj.showProperties(); var checkResult=checkTextBox(toBeCheckedObj); ![]() if(checkResult) { document.getElementById(toBeCheckedObj.msgSpanId).className="feedbackHide"; }![]() else { document.getElementById(toBeCheckedObj.msgSpanId).className="feedbackShow"; document.getElementById(toBeCheckedObj.textboxName).focus(); return false; } } // alert("all passed"); return true; }![]() ![]() /**//** * Check text field in the form */![]() function checkTextBox(toBeCheckedObj) { var validChar=toBeCheckedObj.validChar; var isRequired=toBeCheckedObj.isRequired; var inputValue=document.getElementById(toBeCheckedObj.textboxName).value; ![]() if(isRequired!="true" && inputValue.length<1) { return true; }![]() else { var regexStr="^"+validChar+"$"; var regex=new RegExp(regexStr); return regex.test(inputValue); } }5。验证效果 ![]() 以上,欢迎提出宝贵意见,在此感谢对前两篇拙文提出宝贵建议的同仁。 代码下载: http://www.blogjava.net/Files/sitinspring/JsFormChecker20080521125711.rar
| |||||||||||
| >> 相关文章 | |||||||||||
|
授权使用:汉南在线 http://www.hzwz.net/(2008-2009) Copyright (c) 2002-2007 汉南在线. All Rights Reserved . 经营许可证:陕ICP备05000109号 Powered by:汉南在线 |