键控事件中的输入 val() 延迟
Input val() at keyup event is delayed
如果您快速在输入字段中键入两个字符(例如数字"12")并在每个keyup事件中记录val(),我们会得到两个keyup事件,但两次val()
都是12
(在我的示例中)。
$(".myInput").keyup(function(e){
console.log("val() = " + $(this).val());
});
键入"12"时的预期输出:
val() = 1
val() = 12
键入"12"时观察到的输出:
val() = 12
val() = 12
在这里摆弄。
更新val()
是否有内置延迟?这感觉像是一个错误,但我在Chrome,Safari和Firefox上看到了相同的行为。
这是因为您在触发1
的keyup
事件之前按下了2
。 在您释放密钥之前,它不会触发,但您可以在释放第一个字符之前键入下一个字符。 由于输入框随后包含keyup
任一事件触发前的12
,因此val()
会向您报告这两个事件。
使用input
事件 跟踪输入字段更改非常有用,它将防止在这种情况下的行为:
$("#testField").on('input', function(e){
$('.outputContainer').append("val() = " + $(this).val() + "m keycode = "+ e.keyCode +"'n");
});
希望这有帮助。
片段
$(".outputContainer").html("Type a number fast in the field above 'n");
$("#testField").on('input', function(e){
$('.outputContainer').append("val() = " + $(this).val() + "m keycode = "+ e.keyCode +"'n");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="testField" type="number">
<div class="outputContainer">
test
</div>
相关文章:
- 可以简化嵌套的延迟Q Promises解析吗
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- onclick函数需要双击,因为类分配延迟
- 如何在salesforce aura闪电组件中使用jQuery.val()
- 更多延迟动画
- 对父作用域的指令更新延迟了一步
- 为JS函数添加延迟
- 带有延迟的循环每次应运行5次
- 如何防止在使用.val()时引入XSS漏洞
- 关键帧之间的css3动画延迟
- 如何在有延迟的情况下对两个代码进行积分
- 如何为.css状态的更改添加延迟
- JQuery.val( ) not working
- Angular.js延迟控制器初始化
- 在延迟时设置Whois脚本
- 如何在Javascript中延迟setInterval
- 如何在一个元素动画之后延迟
- 如何将一个方法延迟到另一个方法首先完成,javascript
- jQuery延迟了ajax调用的循环
- 键控事件中的输入 val() 延迟