Javascript 在给定值之前运行jQuery.on()
为什么.on()在按键之前没有获取表单输入字段的值(#忘记)Javascript 在给定值之前运行jQuery.on(),javascript,jquery,Javascript,Jquery,为什么.on()在按键之前没有获取表单输入字段的值(#忘记) $(document).ready(function() { $(document).on('keypress', '#pass', function() { var value = $.trim($('#pass').val()); alert(value); if (!value.length) { alert("Show"); $('
$(document).ready(function() {
$(document).on('keypress', '#pass', function() {
var value = $.trim($('#pass').val());
alert(value);
if (!value.length) {
alert("Show");
$('#forgot').show();
} else {
alert("Hide");
$('#forgot').hide();
}
});
});
当我输入第一个字符时,警报显示没有输入。第二个字符导致值仅为第一个字符。.on()函数似乎在注册按键之前运行?如何修复此问题或是否有其他功能?只需将
keypress
更改为keypup
:
$(document).ready(function() {
$(document).on('keyup', '#pass', function() {
var value = $.trim($('#pass').val());
console.log(value);
if (!value.length) {
console.log("Show");
$('#forgot').show();
} else {
console.log("Hide");
$('#forgot').hide();
}
});
});
您需要keyup事件而不是keypress 因此,请替换:
$(document).on('keypress', '#pass', function() {
与
按键时触发的事件。它不会等待值的出现。尝试使用
keyup
<按下后释放按键时,会触发代码>键向上,直到处理该值为止-
$(document).on('keyup', '#pass', function() {
按键
当浏览器注册键盘输入时,按键事件被发送到元素。这与keydown事件类似,只是修改键和非打印键(如Shift、Esc和delete)触发keydown事件,而不是keypress事件。根据平台和浏览器的不同,这两个事件之间可能会出现其他差异
keyup
当用户释放键盘上的键时,keyup事件被发送到元素。它可以附加到任何元素,但事件只发送到具有焦点的元素。可聚焦元素在浏览器之间可能有所不同,但表单元素始终可以获得焦点,因此对于这种事件类型来说是合理的候选者
按键启动前按下按键会触发按键事件)。所以它不会得到完整的值。
使用键控键控
HTML
我现在就来看一看,看看如何完美地实现它!那么,在函数运行时,keyup和keypress之间的唯一区别是什么呢?
keypress
事件是在键启动前按下键时触发的。不要使用alert()使用console.log()stackoverflow.com/questions/8203473/…@HimeshAadeshara:而是检查我的答案,它正在工作,使用ID按钮
-注意,keyup只触发一次,因此重复的字符不会单独注册。
$(document).on('keyup', '#pass', function() {
<input id="pass">
$(document).ready(function() {
$(document).on('keyup', '#pass', function() {
var value = $.trim($('#pass').val());
alert(value);
if (!value.length) {
alert("Show");
$('#forgot').show();
} else {
alert("Hide");
$('#forgot').hide();
}
});
});