0

私の現在のコードは、有効な電子メールの場合は入力フィールドの境界線の色を緑に変更し、無効な電子メールの場合は赤に変更します。
html:

<input class="ui_input2 no_space" id="input_email" type="email" name="email" style="height:25px; width:300px; font-size:16px;" required />

jQuery:

$(document).ready(function() {
    $('#input_email').keyup(function() {
        var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
        var val_i_email = $("#input_email").val();

        var empty = false;
        $('#input_email').each(function() {
            if (val_i_email < 5 || !emailReg.test(val_i_email)) {
                empty = true;
            }
        });

        if (empty) {
            $(this).addClass("invalid");
            $(this).removeClass("valid");
        } else {
            $(this).addClass("valid");
            $(this).removeClass("invalid");
        }
    });
});

入力するとすべてが完全に機能しますが、オプション (例: 以前に使用した電子メール) をクリックした場合、テキストを少し編集しない限り、境界線の色は変わらないようです。

スクリーンショット:
ここに画像の説明を入力

上記の強調表示されたオプションをクリックしました。結果は次のとおりです。
ここに画像の説明を入力

自動的に提案されたオプションをクリックしたときに、別の機能または同じ機能を再度実行する方法はありますか?

jsfiddle

4

2 に答える 2

0

on()エントリを登録するユーザーイベントの範囲をカバーするために、複数のイベントをバインドするために使用することをお勧めします。

$('#input_email').on('change input paste keyup', function(){
    /* do things here */
});
于 2013-04-28T14:29:00.603 に答える