Jör*_*yer 97 javascript forms jquery events javascript-events
我有:
$(someTextInputField).keypress(function() {
alert($(this).val());
});
Run Code Online (Sandbox Code Playgroud)
现在警报总是在按键前返回值(例如,字段为空,我输入'a',警报给我''.然后我输入'b',警报给我'a'......).但是我想要按键后的价值 - 我怎么能这样做?
背景:我想在文本字段包含至少一个字符时立即启用按钮.所以我在每个按键事件上运行此测试,但使用返回的val()结果总是落后一步.使用change()事件对我来说不是一个选项,因为在您离开文本框之前按钮被禁用.如果有更好的方法,我很高兴听到它!
Hoo*_*ing 144
更改keypress到keyup:
$(someTextInputField).on("keyup", function() {
alert($(this).val());
});
Run Code Online (Sandbox Code Playgroud)
keypress按下keyup该键时触发,当释放该键时触发.
bil*_*oah 56
很惊讶没有人提到js"输入"事件:
$(someTextInputField).on('input', function() {
alert($(this).val());
});
Run Code Online (Sandbox Code Playgroud)
推荐的.
https://developer.mozilla.org/en-US/docs/Web/Events/input
尝试这样的事情:
$('#someField').keypress(function() {
setTimeout(function() {
if ($('#someField').val().length > 0)
$('#theButton').attr('disabled', false);
}, 1);
});
Run Code Online (Sandbox Code Playgroud)
这只是引入了超时,以便在“按键”事件循环完成后,您的代码将在此后几乎立即运行。如此短的计时器间隔(即使被浏览器四舍五入)也不会引起注意。
编辑——或者你可以像其他人说的那样使用“keyup”,尽管它的语义不同。
或者,您可以使用keydown事件,并将其超时设置为0。
这样,更改将立即应用,而不是在用户停止按住键时应用。
$(someTextInputField).on("keydown", function() {
setTimeout(function($elem){
alert($elem.val());
}, 0, $(this));
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76686 次 |
| 最近记录: |