我正在尝试使用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,因为没有任何警报消息触发。
答案 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
另外,提到爸爸的逗号是错误的。