我尝试使用jquery验证远程处理规则验证我的注册表单的email
字段。
以下是我尝试的内容:
$.validator.addMethod("isAlrdExist", function(value, element)
{
var inputElem = $('#registerForm :input[name="email"]'),
data = { "email" : inputElem.val() },
eReport = ''; //error report
$.ajax(
{
type: "GET",
url: getURL() + WebConfig.RACustomer + "?$filter=WebAccount eq '" + $("#email").val() + "'",
dataType: "json",
success: function(res)
{
if (res.length != 0)
{
return '<p>This email address is already registered.</p>';
}
else
{
return true;
}
},
error: function(xhr, textStatus, errorThrown)
{
return false;
}
});
}, '');
$("#registerForm").validate({
onkeyup: false,
rules: {
email: {
isAlrdExist: true
}
}
});
问题:当我执行console.log($("#registerForm").valid());
时,单击“注册”按钮,数据库中甚至还不存在email
,但结果为false
。< / p>
知道可能导致这种情况的原因。
答案 0 :(得分:0)
你可以将你想要的所有东西都塞进默认的remote规则中,但并不是100%明确,但值得一试。
$('#registerForm').validate({
rules: {
email: {
remote: {
url:getURL() + WebConfig.RACustomer, //will only work if this is static relative to the form
data: {
"email" : function(){
return $('#registerForm input[name="email"]').val();
},
"$filter" : function() {
return "WebAccount eq '"+$('#email').val()+"'"
}
},
dataType:'html',
type:'GET',
//fiddle with the data here to ultimately return an error message or true
dataFilter:function(data){
if (data.length != 0){
return '<p>This email address is already registered.</p>';
}else{
return true;
}
}
}
}
}
});
我在这里做了一个工作示例:http://jsfiddle.net/ryleyb/fhpr52ca/