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 に答える