在编写表单验证的时候validate()出现了错误,当我添加rules的时候,出现报错。关键代码如下所示

$("#inputForm").validate({
                    	rules : {
                    		excavateDiameter : {
                				 required: true,    //要求输入不能为空
                                 number: true,     //输入必须是数字
                                 min : 0,
                                 maxlength:10,
                                 minNumber: $("#excavateDiameter").val()    //调用自定义验证
                    		}
                		},
                		 messages : {
                			 excavateDiameter : {
                				required : "开挖直径不能为空",
                				number : "开挖直径的内容必须为数字",
                				min : "开挖直径不能为负数",
                				minNumber : "开挖直径小数位最多2位,整数位最多7位"
                			}
                		}, 
                        //表单全部校验通过之后进行的动作
                        submitHandler: function(form){

对于表单中excavateDiameter 的是否填写,是否为数值,最小值与最大值进行检测,并弹出相应的消息。

之后,js出现了报错:

Uncaught TypeError: Cannot read property

stackOverFlow给出的解决方案中写到,可能是有的js包没有导入,我导入之后也没反应。

 

我的这个代码的问题所在,是因为没有定义函数minNumber,出现的报错。这个validate检测我是套用前辈写好的框架,没有加上minNumber函数,才导致的问题出现。之后在validate上面加上minNumber函数,就能够成功运行。

//自定义校验,用来验证整数位个数和小数位个数
    jQuery.validator.addMethod("minNumber",function(value, element){
        var returnVal = true;
        inputZ=value;
        
        var ArrMen= inputZ.split(".");    //截取字符串
        if(ArrMen.length==1){
        	if(inputZ.length>7){//判断整数位的长度
        		 returnVal = false;
                 return false;
        	}
        }
        if(ArrMen.length==2){
            if(ArrMen[1].length>2){    //判断小数点后面的字符串长度
                returnVal = false;
                return false;
            }
            if(ArrMen[0].length>7){    //判断小数点前面的字符串长度
                returnVal = false;
                return false;
            }
        }
        return returnVal;
    },"小数点后最多为两位");         //验证错误信息