<script type="text/javascript">
$(document).ready(function() {
jQuery(function($){
$("#form").submit(function(e){
if ($(this).valid()){
$.ajax( {
type: "POST",
url: "http://localhost/My/modules/validate.php",
});
}
return false;
})});
$("#form").validate({
rules: {
user: {
remote: {
url: "http://localhost/My/modules/validate.php",
async: false,
}
}
}
});
});
$.validator.setDefaults({
debug: true,
success: "valid",
});
</script>
我想创建远程验证规则。此示例正确读取ajax请求。虽然返回true / false都会评估验证错误。
但是,删除ajax部分(jQuery())会导致缺少ajax初始化,甚至不会处理请求。
async:false似乎是被动的,删除它会产生同样的结果。
任何人都可以有任何想法在这里出现什么问题?
编辑:
$(document).ready(function() {
$("#form").validate({
rules: {
user: {
remote: "http://localhost/My/modules/validate.php",
}
},
submitHandler: function (form) {
// do your ajax form submission here
return false; // prevent redirect since you did ajax
}
});
});
</script>
答案 0 :(得分:2)
使用Validate插件时,您不需要外部submit
处理程序,因为它已经内置了所有事件处理程序。
只有在表单有效时才会触发内置submitHandler
,并且您可以在表单提交时放置任何ajax
。
您正在两个地方ajax
使用remote
规则和submit
处理程序。
remote
规则。submitHandler
。这仅使用the remote
rule, as per documentation:
$(document).ready(function () {
$("#form").validate({
rules: {
user: {
// ajax in remote rule to check this field
remote: "http://localhost/My/modules/validate.php"
}
}
}
});
});
// get rid of all this
//$.validator.setDefaults({
//debug: true, // not needed in production
//success: "valid", // this is already the default.
//});
以下只是我的建议如果您正在使用ajax进行表单提交。否则请忽略它。
这是使用the submitHandler
callback, as per documentation:
$(document).ready(function () {
$("#form").validate({
// your rules & options,
submitHandler: function (form) {
// do your ajax form submission here
return false; // prevent redirect since you did ajax
}
});
});