テキスト入力フィールドとチェックボックスがあります。テキストフィールドに入力がある場合にのみ、チェックボックスを無効にする必要があります。ほとんどのシナリオでうまく機能するソリューションがあります。
HTML:
<input type="text" id="search" />
<input type="checkbox" id="cb" />
<label for="cb">Enabled only if no search term</label>
jQuery:
$('#search').keyup(function (e) {
var enable = $(this).val() == 0;
if (enable) {
$('#cb').removeAttr('disabled');
} else {
$('#cb').attr('disabled', 'disabled');
}
});
jsFiddleでライブをご覧ください。
これは、キーボードを使用してテキストを入力または削除した場合、およびキーボードを使用してテキストを貼り付けた場合に機能します。
ユーザーが右クリックのコンテキストメニューを使用してテキストを貼り付ける場合、またはユーザーがIEが入力フィールドに追加する小さな「X」を押して入力フィールドをクリアできるようにすると失敗します。
質問
これらのシナリオでも機能するようにコードを改善するにはどうすればよいですか?テキストボックスのフォーカスが失われるのを待つと、ユーザーエクスペリエンスが低下します。