0

ユーザー名が AJAX と jQuery で自由に使用できるかどうかを確認したい。

登録入力欄です

      <tr> 
          <td><input type = "text" id ="new_username"/></td>
      </tr>
      <tr>
        <td></td>
        <td id ="information"></td>
     </tr>
     <input type = "submit" id = "sign-up" value = "Sign up" />

ここにajaxを使用したjquery部分があります

(function($){
$(document).ready(function(){
    $('#new_username').blur(function() {
        var newUsername = $(this).val(); 

        $.post('../registration/check-username.php', 
            { 
                newUsername : newUsername  
            }, function (data) {
                $('#information').html(data);
            }
        );  
    }); 

    if( $("#information").html() != "" ) { 
        $("#sign-up").attr('disabled', 'disabled');
    } else { 
        $("#sign-up").removeAttr("disabled"); 
    }     
});
})(jQuery);

何か問題がある場合、「情報」td は何らかのエラー メッセージを受け取ります。ユーザー名が無料の場合は空で、通知はありません。問題は、ajax が応答するまでに時間がかかり、どこかをクリックするだけで高速になることです。これにより、正しくないチェックが発生します。私の質問を理解できたら、何かアイデアはありますか?

4

3 に答える 3

1

「どこかをクリックするだけで速い」とは、入力が検証される前にユーザーが送信をクリックできることを指していると思います。$.ajax() beforeSendこれを回避するには、次の方法を使用します。

$(document).ready(function(){
  $('#new_username').blur(function() {
    $.ajax({
      url: "../registration/check-username.php",
      data: {
        newUsername: $(this).val()
      },
      beforeSend: function() {
        $("#sign-up").attr("disabled","disabled");
      },
      success: function(data) {
        $('#information').html(data);
        if( !data )
          $("#sign-up").removeAttr("disabled");
      }
    });
  });
});
于 2013-05-01T07:51:13.357 に答える