这支笔中有一个带有.on('change')
(或键控)事件处理程序的输入元素,该事件处理程序将输入值打印到
$('#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>
有趣的行为是,如果您在按下“向上”或“向下”箭头时不移动鼠标,则事件处理程序将不会触发。箭头很小,每次按下鼠标时都不移动鼠标并不容易,但只要尝试一下,您就会发现处理程序不会每次触发都会导致序列f.e. 4(单击向上)-> 5(单击向上,鼠标未移动)-5(单击向上,相同)-5(单击向上,相同)-8(单击向上,鼠标移动,触发有效)
即使鼠标不动也如何触发处理程序,为什么这样工作?
答案 0 :(得分:-1)
如果我理解正确,您想立即更改输入的输出。
仅在输入完成后才触发change
事件。
您需要使用keyup
事件刷新每个输入的输出。
答案 1 :(得分:-1)
tl,dr; 使用input
事件。
input
事件实现的目的是超越必须基于<input>
类型和所使用的输入方法(与键盘,指针,触摸或设备有关的输入)进行不同的监听。
当
input
,<input>
或<select>
元素的值被更改时,DOM<textarea>
事件将同时触发。该事件还适用于启用了contenteditable
的元素,以及启用了designMode
的任何元素。
当您使用内部.stepUp()
的{{1}}和.stepDown()
方法时,即使它们更新type="number"
的值,它们也不总是触发{ {1}}事件。
当您按住向上或向下箭头键并且值不断变化时(或者在不松开鼠标的情况下按住箭头),这很容易观察到。拖动input
change
的句柄(不释放)的情况也是如此。 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
}
事件documentation here。