公司的管理很乱,也没有输入的脚本验证调用,自己就小试身手自己写了一个js的输入验证,下面是程序的主题,可以直接放在ASP页面中,也可以放在头文件中。
- <script language="javascript">
- //js验证
-
- function toDateFromString(strDate){
- if(strDate.length!=8){
- return 0;
- }
- var dtDate =1;
- var nYear=parseInt(strDate.substring(0,4),10);
- var nMonth =parseInt(strDate.substring(4,6 ),10);
- var nDay = parseInt(strDate.substring(6,8),10);
- if( isNaN(nYear)==true||isNaN(nMonth)==true||isNaN(nDay)==true){
- return 0;
- }
- dtDate =new Date(nYear,nMonth-1,nDay);
- if(nYear!=dtDate.getFullYear()||(nMonth-1)!=dtDate.getMonth()||nDay!=dtDate.getDate()){
- return 0;
- }
- return 1;
- }
-
- function checkMonthFromString(strMonth){
- if(strMonth.length!=6){
- return 0;
- }
- var dtDate =1;
- var nYear=parseInt(strMonth.substring(0,4),10);
- var nMonth =parseInt(strMonth.substring(4,6 ),10);
- var nDay = parseInt("01");
- if( isNaN(nYear)==true||isNaN(nMonth)==true||isNaN(nDay) ==true){
- return 0;
- }
- dtDate =new Date(nYear,nMonth-1,nDay);
- if(nYear!=dtDate.getFullYear()||(nMonth-1)!=dtDate.getMonth()||nDay!=dtDate.getDate()){
- return 0 ;
- }
- return 1;
- }
-
- function inputJsCheck(object,checkType,showObject){
- //默认为正确
- switch (checkType) {
- case "Int":
- //整数验证
-
- var patrn=/^[0-9]+$/;
- if (!patrn.test(object.value)){
- showObject.innerHTML="*输入整数"
- object.setAttribute("isCheck","0");
- }else{
- showObject.innerHTML="*正确"
- object.setAttribute("isCheck","1");
- }
- return ;
- case "Money":
- //价格验证
-
- var patrn=/^-?\d+\.{0,}\d{0,}$/;
- if (!patrn.test(object.value)){
- showObject.innerHTML="*输入格式不符合要求"
- object.setAttribute("isCheck","0");
-
- }else{
- showObject.innerHTML="*正确"
- object.setAttribute("isCheck","1");
- }
- return
- case "erpDate":
- //日期验证
- if(toDateFromString(object.value)==0||object.value==""){
- showObject.innerHTML="*输入格式不符合要求"
- object.setAttribute("isCheck","0");
- }else{
- showObject.innerHTML="*正确"
- object.setAttribute("isCheck","1");
- }
- return
- case "erpMonth":
- //月份验证
- //alert('b')
- if(checkMonthFromString(object.value)==0||object.value==""){
- showObject.innerHTML="*输入格式不符合要求"
- object.setAttribute("isCheck","0");
- }else{
- showObject.innerHTML="*正确"
- object.setAttribute("isCheck","1");
- }
- return
- case "noNull":
- //不能为空
- if(object.value==""){
- showObject.innerHTML="*请输入内容"
- object.setAttribute("isCheck","0");
- }else{
- showObject.innerHTML="*正确"
- object.setAttribute("isCheck","1");
- }
- return
- case "Check":
- isCheck=0;
- for(j=0;j<object.length;j++)if(object[j].checked)isCheck++
- if(isCheck==0){
- showObject.innerHTML="*请至少选择一项"
- for(j=0;j<object.length;j++)object[j].setAttribute("isCheck","0");
- }else{
- showObject.innerHTML="*正确"
- for(j=0;j<object.length;j++)object[j].setAttribute("isCheck","1");
- }
- return;
- //结束..
- }
- }
-
- function CheckAdd(formObj,actionPage){
- var isCheck=true
- //alert(formObj.elements.length)
- for(i=0;i<formObj.elements.length;i++){
- var e=formObj.elements[i];
-
- if("onBlurCheck" in e ){
- jseval=e.getAttribute("onBlurCheck")
- eval_r(jseval);
- isCheck=isCheck&e.attributes["isCheck"].nodeValue
- }
- }
- if(isCheck){
- formObj.action=actionPage
- formObj.submit()
- }
- else{
- alert('请输完必选项才能够继续!')
- }
- }
- </script>
由于时间问题,现在程序只能对INT类型,MONEY类型,不能为空,和类似201201,20120101,的日期格式,多选框进行进行验证,其他的可以自行扩展。以后再进行补充,在需要验证的空间中加入如下属性:
- isCheck=0//是一个自定义的属性,判断控件是否通过验证
- onBlurCheck="inputJsCheck(document.getElementById('<这里输入本控件的ID>'),'<验证类型>',document.getElementById('<这里输入验证提示DIV的ID>'))"//这个是一段验证的函数的调用
- onBlur="eval(this.getAttribute('onBlurCheck'))"//这是一段验证出发时间
例如名称为text1,的文本框,其中它的验证提示信息显示在LABtext1的DIV中,并且只能输入MONEY类型。
- <input name="text1" type=text id="text1" isCheck=0
- onBlurCheck="inputJsCheck(document.getElementById('text1'),'Money',document.getElementById('LABtext1'))"
- onBlur="eval(this.getAttribute('onBlurCheck'));" >
- <div id="LABtext1">*必须输入Money类型</div>
提交按钮时候也应该对提交form中在进行一边沿着,调用上边的CheckAdd函数,写成如下形式:
- <input type="button" name="b1" value="提交"
- onClick="CheckAdd(document.getElementById('<提交form的ID>'),'<提交的页面>');">
阅读(3273) | 评论(0) | 转发(0) |