我一直在这一整天挣扎。我需要验证一个表单,如果有效的使用ajax调用提交。从我读过的所有验证发生后,submitHandler应该触发,包括远程检查。jQuery验证ajax和远程域的意外行为
当我进入一个已经存在我得到'User Name already exists'消息和submitHandler不叫,预期用户名。但是,如果其他任何验证检查失败,形式通常被发布到表单操作URL和submitHandler回调似乎永远不会被调用。
希望有人能看到我在做什么错:
User NamePasswordFirst NameLast NameEmail AddressUser TypeAction
Administrator
Standard
Surveyor
Add
$(document).ready(function() {
$('#addUserForm').validate({
onsubmit: true, onfocusout: false, onkeyup: false, onclick: false, errorPlacement: function (error, element) { },
invalidHandler: function (event, validator) {
if (validator.errorList.length) {
alert(validator.errorList[0].message);
validator.errorList[0].element.focus();
}
},
rules: {
username: { required: true, remote: '/admin/isusernameavailable' },
password: { required: true },
forename: { required: true },
surname: { required: true },
email: { required: true, email: true }
},
messages: {
username: { required: 'User Name is required', remote: 'User Name already exists' },
password: { required: 'Password is required' },
forename: { required: 'First Name is required' },
surname: { required: 'Last Name is required' },
email: { required: 'Email Address is required', email: 'Email Address is invalid' }
},
submitHandler: function (form) {
// create the data object
var data = {
Name: $('#Name').val(),
Password: $('#Password').val(),
FirstName: $('#FirstName').val(),
LastName: $('#LastName').val(),
Email: $('#Email').val(),
Type: $('#Type').val()
}
// post the form
var posting = $.post('/admin/adduser', data);
// post success
posting.done(function (data) {
// display the results
$('#results').html(data);
$('#Name').val('');
$('#Password').val('');
$('#FirstName').val('');
$('#LastName').val('');
$('#Email').val('');
$('#Type').val('Standard');
});
// post error
posting.fail(HandlePostFailError);
}
});
});
2013-08-21
lozz