2011-07-06 15 views
1

したがって、受け入れ可能な郵便番号のデータベースに対して入力された郵便番号をチェックするカスタムバリデーターがあります。jQuery Validatorがajaxを使用してカスタムメソッドを使用してサブミットできない

次のように私のカスタムメソッドは次のとおりです。

jQuery.validator.addMethod("validZip", function(value, element){ 
    var _id = $(element).attr("id"); 
    $.post(
     '/xpress/wp-admin/admin-ajax.php', 
     {action:"test_checkZip", zip:value}, 
     function(response){ 
      if (result == 0){ 
       return false; 
      } else { 
       return true; 
      } 
     } 
    ); 
}, '*'); 

問題は、私は信じて、AJAXリクエストのレイテンシーを非ブロックされているのでするための時間にバリのために真/偽の結果を返すdoesntのことです認識されるべきである。

結果が真であるときはいつも、エラーメッセージを隠すことができず、フォームは送信可能ではありません。

私はエラー要素を明示的に隠すことによってtrueコードブロックを返す際にエラーメッセージを隠すことができました。エラーメッセージは、を非表示にしますが、カスタムメソッドがtrueを返すことができないため、フォームはfalseを返します。

私は間違ったことをしましたか?この問題を回避するにはどうすればよいですか?

多くのありがとうございます。

答えて

1

あなたは$.ajax

jQuery.validator.addMethod("validZip", function(value, element){ 
    var _id = $(element).attr("id"); 
    var return_val = null; 
    $.ajax({ 
     url: '/xpress/wp-admin/admin-ajax.php', 
     type: 'post', 
     data: {action:"test_checkZip", zip:value}, 
     async: false, //This does the trick 
     success: function(response){ 
      if (result == 0){ 
       return_val = false; 
      } else { 
       return_val = true; 
      } 
     } 
    }); 
    return return_val; 
}, '*'); 

を使用して、同期recuestを使用することができ、この情報がお役に立てば幸いです。乾杯。

+0

タイプ: 'POST'' – jerluc

+0

@jerlucありがとうございました。 –

-1

$.ajax()を代わりに使用する場合は、非同期ではなく同期的にPOSTを指定できます。

$.ajax({ 
    url: '/xpress/wp-admin/admin-ajax.php', 
    type: 'POST', 
    data: {action:"test_checkZip", zip:value}, 
    async: false, 
    success: function(response){ 
     // Process response.. 
    } 
}); 
関連する問題