我正在尝试添加自定义规则以检查我的jquery验证函数中的用户名的唯一性,但它不会返回任何结果。当我警告msg变量时,它会正确警报。
这是我的代码:
jQuery(document).ready(function() {
var validator = $("#frmregister").validate({
rules: {
"txtName":"required",
txtuName: {
required:true,
usernameCheck:true // remote check for duplicate username
},
},
messages: {
txtuName:{
required:"Please enter User name",
usernameCheck:"this username is already in use."
},
},
highlight: function( element, errorClass, validClass ) {
$(element).removeClass(validClass);
},
errorElement: 'div'
});
});
jQuery.validator.addMethod('usernameCheck', function(txtuName) {
var burl=$("#bseurl").val();
//alert(burl);
var postURL = burl+"home/usernamechk";
//alert(postURL);
var cnt = $("#frmregister").serialize();
jQuery.ajax({
type: "POST",
data: cnt,
url: postURL,
success: function(msg) {
result = (msg== 2) ? true : false;
}
return result;
});
}, '');
答案 0 :(得分:1)
这看起来不像有效的Javascript语法。 return result
位于对象内。但真正的问题是AJAX是异步的,因此验证器方法返回时无需等待AJAX的结果。
jquery-validate提供了一个remote:
验证方法,负责等待响应。服务器只需返回true或false作为JSON。