我正在尝试通过自定义函数使用 jQuery 验证引擎验证子域的可用性。验证似乎正确进行,但如果 .ajax 请求返回 200,则不会显示警报文本。我已添加 Access-Control-Allow-Origin
header ,并且可以在日志中看到请求成功完成。
我做错了什么?
Javascript 函数:
function validateDomain(field, rules, i, options) {
var url = "https://" + field.val() + ".example.com/";
$.ajax(url,
{
statusCode: {
200: function() {
//alert('name exists already');
return options.allrules.validate2fields.alertText;
}
}
});
}
表单字段:
<label class="required" for="signup[subdomain]">Subdomain<span>*</span></label>
<span>https://</span>
<input id="signup[subdomain]" name="signup[subdomain]" class="field field validate[required,funcCall[validateDomain]]" type="text">
<span>.example.com</span>
最佳答案
问题是 $.ajax
是一个异步函数,不能以这种方式工作。
function validateDomain(field, rules, i, options) {
var url = "https://" + field.val() + ".example.com/";
$.ajax(url,
{
statusCode: {
200: function() { // [ second function ]
return options.allrules.validate2fields.alertText;
}
}
});
}
问题是:您的返回仅针对[第二个函数]
,而不是针对validateDomain
。
查看 jquery-validation-engine 的文档我看不出有什么办法可以做你想做的事。
关于jQuery 验证引擎自定义 javascript 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15410319/