0

入力があります。ユーザーが何かを入力すると、スクリプトがその情報をphpスクリプトに送信します。このスクリプトは、入力されたテキストを使用できるかどうかを返します。

テキストを使用できない場合は、送信ボタンを無効にして、結果のテキストにクラスを追加します。

問題は奇妙で、ajaxは機能し、結果は返されますが、もう一度入力にフォーカスしてぼかしを入れない限り、ボタンの無効化とクラスの追加は行われません。

これが私のコードです:

$('#alias').blur(function() {
if ($('#alias').val()) {
    var aliascheck = $('#alias').val();
    $(".aliascheck").load('checkalias.php?alias='+aliascheck);

    var result = $('.aliascheck').text();
    if (result.indexOf("Taken") != -1) {
        $('#shorten').attr("disabled","disabled");
        $('.aliascheck').addClass('error');
    } else {
        $('#shorten').removeAttr("disabled");
        $('.aliascheck').removeClass('error');
    }
}
});

コードはここにあります:http://markhenderson.ws/dev/tmtmu/ 「taken」イベントを複製するには、エイリアスとして「taken」と入力します。それ以外のものは利用可能に戻ります。

なぜこれが起こっているのか誰かが知っていますか?

ありがとう

4

1 に答える 1

1

.load呼び出し後のコードを非同期呼び出しのコールバック関数に入れる必要があります。

何かのようなもの:

$('#alias').blur(function() {
if ($('#alias').val()) {
    var aliascheck = $('#alias').val();
    $(".aliascheck").load('checkalias.php?alias='+aliascheck, function() {
        var result = $('.aliascheck').text();
        if (result.indexOf("Taken") != -1) {
            $('#shorten').attr("disabled","disabled");
            $('.aliascheck').addClass('error');
        } else {
            $('#shorten').removeAttr("disabled");
            $('.aliascheck').removeClass('error');
        }

    });


}
});
于 2012-09-01T20:18:51.243 に答える