6

我正在尝试通过自定义函数使用 jQuery Validate Engine 验证子域的可用性。验证似乎正确发生,但如果 .ajax 请求返回 200,则不会显示 alertText。我添加了Access-Control-Allow-Origin标头,并且可以在我的日志中看到请求成功完成。

我究竟做错了什么?

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>
4

1 回答 1

0

问题是这$.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;
                }
            }
        });
}

问题是:您的回报仅适用于[second function]不适用validateDomain

查看jquery-validation-engine的文档,我看不到做你想做的事的方法。

于 2013-04-09T21:22:15.693 回答