html - 为什么输入行为会这样工作?
问题描述
在这支笔中,有一个带有.on('change')
(或 keyup)事件处理程序的输入元素,它将输入值打印到
$('#input-1').on('change', function() {
$('.output').text($(this).val());
})
.output {
border: 1px solid purple;
margin: 10%
}
#input-1 {
height: 30px
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="input-1" type="number">
<div class="output"></div>
有趣的行为是,如果您在按下“向上”或“向下”箭头时不移动鼠标,事件处理程序将不会触发。箭头很小,每次按下它都不容易移动鼠标,但试一试,你会发现处理程序不会每次都触发,导致序列 fe 4 (click up) -> 5(click up ,鼠标未移动)- 5(单击,相同)- 5(单击,相同)- 8(单击,鼠标移动,触发器工作)
即使鼠标没有移动,如何触发处理程序,为什么它会这样工作?
解决方案
tl,博士;使用input
事件。
事件实现的目的input
是超越必须根据<input>
类型和使用的输入方法(键盘、指针、触摸或设备相关)进行不同的侦听。
当、或元素的值被更改时, DOM
input
事件会同步触发。该事件也适用于启用的元素,以及打开时的任何元素。<input>
<select>
<textarea>
contenteditable
designMode
当您使用 internal.stepUp()
和.stepDown()
的方法时type="number"
,即使它们更新了 的值,input
它们并不总是触发change
事件。
当您按住向上或向下箭头键并且值不断变化时(或者当您将鼠标按住箭头而不释放时),这很容易观察到。拖动a的句柄type="range"
<input>
(不释放)也是如此。该change
事件仅在您释放句柄时input
触发,但在每次更改值时触发。
您更新的示例:
$('#input-1').on('input', function() {
$('.output').text($(this).val());
})
.output {
border: 1px solid purple;
margin: 10%
}
#input-1 {
height: 30px
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="input-1" type="number">
<div class="output"></div>
input
活动文档在这里。
推荐阅读
- c++ - 无法通过 C# UWP 从 C++ 库访问文件
- cucumber - NoClassDefFoundError:gherkin/IGherkinDialectProvider 在黄瓜中作为 junit 运行时。为什么我们会收到此错误以及如何解决此错误?
- python - 使用张量流时出现错误 TypeError
- apache-spark - 如何使用 Apache Spark 读取/写入协议缓冲区消息?
- jquery - 错误:使用 JQuery 从列表中选择单选按钮
- html - 更改布尔玛中的选择箭头颜色
- mongodb - 通过整个未知文档中的键和值在 mongo 中搜索
- ios - 我正面临这个错误“exc_bad_instruction (code=exc_i386_invop subcode=0x0)”
- angular - 如何从中获取 FormControl 的值并将其作为参数传递给函数?
- android - 如何使用 volley 发送 JSON 原始数据