我编写了一个用于检查自定义字段的 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 甚至建议不要这样做……但是有什么替代方法呢?
提前致谢。