0

ユーザーがボックスをクリックするたびに、ループを循環してステータス メッセージを表示したいのですが、今は 1 回だけ実行しています。メソッドに問題があることはわかっていますが、nextループの実行が終了するまで status_message を表示するにはどうすればよいですか?

http://jsfiddle.net/N8LMF/

HTML

    <input type='textbox' class='' name='change_box'>
    <div class='alert_message'></div>
    <input type='textbox' class='' name='change_box'>
    <div class='alert_message'></div>

Jクエリ

$(document).ready(function(){
    $('input[name=change_box]').live({
        blur: function(){
            var alert_message= $(this).next('.alert_message');
            for (var i=1; i<5; i++) {
                if(i%2 == 0) {
                    alert_message.removeClass().addClass('failure').text('failed').fadeOut(500);    
                }             
                else {
                    alert_message.removeClass().addClass('success').text('success').fadeOut(500);
                }
            }
        }
    });
});​
4

4 に答える 4

4

他の人が示したように、 が原因でトリガーされませんが.removeClass、別の問題があります。入力を非表示にし、二度と表示しません。

おそらく、.on代わりに.live次のものを使用する必要があります。

$(document).on('blur', 'input[name=change_box]', function () {
    var alert_message= $(this).next('.alert_message');
    ...
    alert_message.removeClass().addClass('failure alert_message').text('failed')
       //show so it can be faded out again
       .fadeOut(500, function () { $(this).show().text(''); });    
});

「成功」のために同様の変更を行う必要があります

于 2012-12-04T21:58:01.447 に答える
3

問題の原因はremoveClass()

これにより、すべてのクラスが削除されるため、次にアクセスするときに div を選択できなくなります。

他にループする場合はこれを試してください

if (i % 2 == 0) {
         alert_message.show()
                      .removeClass('success')
                      .addClass('failure').text('failed').fadeOut(500);
}
else {             
         alert_message.show()
                      .removeClass('failure')
                      .addClass('success').text('success').fadeOut(500);
}

フィドルをチェック

于 2012-12-04T21:54:52.030 に答える
0

HTML:

<input type='textbox' class='' name='change_box' id='change_box'>
<div class='alert_message'></div>

Javascript:

$(document).ready(function(){
    $('#change_box').keyup(function() {
        alert('Something changed.');
    });
});
于 2012-12-04T21:57:41.710 に答える
0

コードremoveClass()で alert_message クラスも削除されるため、次のパスでは選択できません。

あなたの for ループもそこにあるべきではありません。現在のコーディング方法では、イベントが発生するたびに 5 回実行します。それはあなたが望むものですか?

于 2012-12-04T21:54:42.967 に答える