我编写了一个 JQuery 验证方法来检查自定义字段。为了检查数据,我使用 AJAX 调用服务器端脚本,该脚本依次返回 true 或 false。如果为 false,则响应还将包含错误消息:
var errorMessage;
var rtErrorMessage = function() {
return errorMessage;
}
jQuery.validator.addMethod('customvalidation', function(value, element) {
var valid = true;
var url = '/validation?data=' + value;
$.ajax({
url: url,
type: 'get',
dataType: 'json',
async: false,
success: function(responseData) {
if (responseData && !responseData.isValid) {
errorMessage = responseData.errorMessage;
valid = false;
}
}
});
return valid;
}, rtErrorMessage);
这可行,但是同步性的转变意味着浏览器在请求期间卡住。这是相当烦人的,JQuery 甚至建议不要这样做......但是有什么替代方案吗?
提前致谢。
最佳答案
使用 jquery validate 的远程方法 - 如果返回 true 或 false,您会收到默认错误消息,并且该字段被标记为有效/无效。
如果您返回任何其他字符串,例如“这是我的错误消息”,则显示的错误消息将是您返回的字符串。
如果文档另有说明,它们已经过时,我正在使用 jquery validate 1.10.0
关于jquery - 在 JQuery 验证中避免 'async: false',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14958792/