我正在尝试根据数据库值创建特殊的邮政编码验证。因此我通过ajax检查值:
jQuery.validator.addMethod("validate_country_from", function(value, element)
{
$.ajax({
type: "POST",
url: "ajax.php",
data: "action=validate_countryzip&direction=1&zip=" +
escape(document.getElementById("zip_from").value) + "&country=" +
escape(document.getElementById("country_from").value),
async: false
}).done(function(msg)
{
if(msg == "true")
{
return true;
}
else
{
return false;
}
});
}, addressError);
我正在通过这些规则在规则中分配函数:
zip_from: {
required: true,
validate_country_from: true
},
country_from: {
required: true,
validate_country_from: true
},
ajax请求工作正常,并且它是同步的,返回的值也是正确的,但我的验证仍告诉我这两个字段有错误。
我希望有人能帮忙......
答案 0 :(得分:1)
我认为你在那里混合了你的jQuery AJAX方法。我之前看过done()
get()
之后使用ajax()
,但jQuery.validator.addMethod("validate_country_from", function(value, element)
{
$.ajax({
type: "POST",
url: "ajax.php",
data: "action=validate_countryzip&direction=1&zip=" +
escape(document.getElementById("zip_from").value) + "&country=" +
escape(document.getElementById("country_from").value),
async: false,
success: function(msg){
if(msg == "true")
{
return true;
}
else
{
return false;
}
},
error: function(x, s, e){
return false;
}
});
}, addressError);
之后从未使用{{1}}。尝试
{{1}}
答案 1 :(得分:0)
感谢您的回答,但我找到了原因:我的“完成”功能是向ajax请求操作返回一个值,而不是验证方法(匿名委托很好,但有时真的很混乱)。
正确的版本是这样的:
jQuery.validator.addMethod("validate_country_from", function(value, element)
{
var test = $.ajax({
type: "POST",
url: "ajax.php",
data: "action=validate_countryzip&direction=1&zip=" +
escape(document.getElementById("zip_from").value) + "&country=" +
escape(document.getElementById("country_from").value),
async: false
}).done(function(msg)
{
});
if(test.responseText == "true")
{
return true;
}
else
{
return false;
}
}, addressError);
然而,这不是最终解决方案,因为它没有捕获任何错误等等。