Jquery - Validator错误无法读取未定义的属性“call”

时间:2015-07-22 00:30:37

标签: javascript jquery validation

我正在尝试使用jquery的validate函数验证表单。当我触发.valid()函数时,我得到一个'无法读取未定义的属性调用。

<script>
$("#form1").validate({
    rules: {
        EditSubName: {
            required: true, 
        }, 
        EditSubStreetNumber: {
            required: true, 
        },
        EditSubStreetName: {
            required: true  
        },
        EditSubSuburb: {
            required: true, 
        },
        EditSubState: {
            required: true,
            lettersonly: true,  
        },
        EditSubPostcode: {
            required: true, 
        },
        EditSubEmail: {
            email: true,    
        }
    },

    errorPlacement: function(error,element) {
         return true;
    },
    highlight: function(element) {
        $(element).closest("input")
        .addClass("textbox_001_err")
        .removeClass("textbox_001");
    },
    unhighlight: function(element) {
        $(element).closest("input")
        .removeClass("textbox_001_err")
        .addClass("textbox_001");
    },  
    submitHandler: function(form) {
        alert('Submitting Entered');
        //Update only
            if($("#radiono").prop("checked") == true)
            {
                alert('Entered Radio No');
                  $(".blackout").css("display", "none");
                   $.ajax({
                    url: 'save/saveSubjectonly.asp',
                    type: "POST",
                    data: {
                        SubjectID: $('#DefSubID').val(),
                        name: $('#EditSubName').val(),
                        dob: $('#EditSubDOB').val(),
                        email: $('#EditSubEmail').val() ,
                        telephone: $('#EditSubTelephone').val() ,
                        mobile: $('#EditSubMobile').val() ,
                        fax: $('#EditSubFax').val() ,
                        streetnumber: $('#EditSubStreetNumber').val() ,
                        streetname: $('#EditSubStreetName').val() ,
                        suburb: $('#EditSubSuburb').val() ,
                        postcode: $('#EditSubPostcode').val() ,
                        state: $('#EditSubState').val() ,
                        notes: $('#EditSubjectNotes').val(),
                        activalue: $('input:checkbox:checked').val(),
                        companyname: $('#EditCompanyName').val()
                    },
                    success: function(result){

                            //location.reload()

                    }
                });

            }; 
            //Made changes for all
            if($("#radioyes").prop("checked") == true)
            {
                    $(".blackout").css("display", "none");
                    $.ajax({
                    url: 'save/saveSubjectandupdate.asp',
                    type: "POST",
                    data: {
                        SubjectID: $('#DefSubID').val(),
                        name: $('#EditSubName').val(),
                        dob: $('#EditSubDOB').val(),
                        email: $('#EditSubEmail').val() ,
                        telephone: $('#EditSubTelephone').val() ,
                        mobile: $('#EditSubMobile').val() ,
                        fax: $('#EditSubFax').val() ,
                        streetnumber: $('#EditSubStreetNumber').val() ,
                        streetname: $('#EditSubStreetName').val() ,
                        suburb: $('#EditSubSuburb').val() ,
                        postcode: $('#EditSubPostcode').val() ,
                        state: $('#EditSubState').val() ,
                        notes: $('#EditSubjectNotes').val(),
                        activalue: $('input:checkbox:checked').val(),
                        companyname: $('#EditCompanyName').val()
                    },
                    success: function(result){
                            alert('Success');
                            //location.reload()

                    }
                });
            } 
    },
});
</script> 

我不确定为什么会这样。我知道它不会进入SubmitHandler,因为没有任何警报消息触发。

3 个答案:

答案 0 :(得分:1)

我发现了问题。我忘记的是,EditSubState规则中的lettersonly是附加的methods.js的一部分,它们没有包含在页面中。

一旦我将其包含在内,验证就可以正常运行。

答案 1 :(得分:0)

您在规则对象中的验证属性中有逗号逗号。

    rules: {
        EditSubName: {
            required: true
        }, 
        EditSubStreetNumber: {
            required: true 
        },
        EditSubStreetName: {
            required: true  
        },
        EditSubSuburb: {
            required: true
        },
        EditSubState: {
            required: true,
            lettersonly: true
        },
        EditSubPostcode: {
            required: true
        },
        EditSubEmail: {
            email: true 
        }
    },

答案 2 :(得分:0)

我还没有将这个库用于jquery,但对于文档,我认为你缺少一个参数用于每个函数或者#34;方法&#34;。

对于文档,高亮函数必须定义如下:

$(".selector").validate({
  highlight: function(element, errorClass) {
    $(element).fadeOut(function() {
      $(element).fadeIn();
    });
  }
});

我认为JS正在尝试调用该特定签名,但是没有为此定义函数,所以你有未定义的。

以下是文档:http://jqueryvalidation.org/validate

另外,提到爸爸的逗号是错误的。