2013-03-14 44 views
6

jQueryの検証エンジンでカスタム関数を使用してサブドメインの可用性を検証しようとしています。検証は正しく行われるように見えますが、.ajaxリクエストが200を返した場合はalertTextは表示されません。Access-Control-Allow-Originヘッダーが追加され、リクエストがログに正常に表示されます。jQuery検証エンジンのカスタムJavaScriptの検証

私は間違っていますか?

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> 
+0

エラーハンドラを追加して、実行されているかどうかを確認できますか?疑問は解析エラーです –

+2

は[関数からAJAX呼び出しの応答を返す方法] /stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call-from-a-function) – Bergi

+1

あなたは[タグ:jquery-validate]と[tag :jquery-validation-engine]ですが、これらは全く異なる2つのプラグインです。あなたはどちらを本当に使っていますか? – Sparky

答えて

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; 
       } 
      } 
     }); 
} 

問題がある:あなたのリターンはvalidateDomainため[second function]ないためです。

jquery-validation-engineのドキュメントを見ると、あなたがしたいことをする方法がわかりません。

関連する問題