0
私はプロジェクトに取り組んでいて、フィールドに入力されたユーザー入力データの存在を検出しようとしました。私はこれがなぜ起こっているのか困惑しています。フィールド内の値の存在が正しく動作していない
私が書いたルーチンはこれです。
$(document).ready(function() {
$('#salary_bal').on('change blur keydown', function() {
if($(this).val.length === 0 || $(this).val() === '') {
setSubmitState('off');
} else {
setSubmitState('on');
}
});
});
function setSubmitState(state) {
switch(state) {
case 'on':
$('#fsSubmit').attr('disabled', false);
$('#fsSubmit').addClass('button');
$('#fsSubmit').addClass('cursor');
break;
case 'off':
$('#fsSubmit').attr('disabled', true);
$('#fsSubmit').removeClass('button');
$('#fsSubmit').removeClass('cursor');
break;
}
}
あなたはおそらくsetSubmitStateコールで推測することができたようバインドされたフィールドに値がない場合、それはフォームの送信ボタンを無効にする必要があります。
私が言ったように、これは正しく動作する「ソー」です。それは、新しくキー入力された文字ではなく、以前の文字に応答しているように実際に動作していることです。
ここでは、動作シーケンスとそれぞれの結果を示します。
- フィールドに「x」を1つ入力します。
- 送信ボタンが有効になりません。
- フィールドに別の「x」を入力します。
- 送信ボタンが有効に変更されます。
- 'x'をバックスペースで削除します。
- 送信ボタンは有効のままです。
- 再びフィールドを空にします。
- 送信ボタンは有効のままです。
- バックスペースもう一度。
- 送信ボタンが無効になります。
私はこれをデバッグしようとして壁に頭を強打されていると、私のホイールを回転さにうんざりして取得しています。 (壁からの頭痛は言うまでもありません)誰もこの問題の解決策を提供できますか?
キーアップはキーアップにする必要があります。したがって、イベントは新しく挿入された文字の後に発生します。 Keydownはキーアップの前に起動し、キーアップ後に文字に入力されます。 –
私がkeyupを使用すると、そのような関数が存在しないことを示すエラーが表示されます。 – Skittles
それを傷つける。 O.o私はなぜそれが働いたのか分かりません。以前は本当にそのエラーが出ていましたが、今はそうではありません。それはちょうどナッツです。ありがとう – Skittles