如何处理<input type="number" id="n" value="5" step=".5" />
的onchange?我不能执行keyup
或keydown
,因为用户可能只使用箭头来更改值。我希望在它发生变化时处理它,而不仅仅是在模糊上,我认为.change()
事件就是这样。有什么想法吗?
发布于 2012-03-08 06:07:27
使用mouseup和keyup
$(":input").bind('keyup mouseup', function () {
alert("changed");
});
发布于 2012-03-08 06:12:17
oninput
事件(.bind('input', fn)
)涵盖从击键到箭头单击和键盘/鼠标粘贴的所有更改,但在IE <9中不受支持。
jQuery(function($) {
$('#mirror').text($('#alice').val());
$('#alice').on('input', function() {
$('#mirror').text($('#alice').val());
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="alice" type="number" step="any" value="99">
<p id="mirror"></p>
发布于 2012-03-08 06:01:32
$(":input").bind('keyup change click', function (e) {
if (! $(this).data("previousValue") ||
$(this).data("previousValue") != $(this).val()
)
{
console.log("changed");
$(this).data("previousValue", $(this).val());
}
});
$(":input").each(function () {
$(this).data("previousValue", $(this).val());
});
这有点困难,但是通过这种方式,您可以使用"click“事件来捕获当您使用鼠标通过输入上的小箭头递增/递减时运行的事件。您可以看到我是如何构建一个小小的手动“更改检查”例程的,该例程确保您的逻辑不会触发,除非值实际发生了更改(以防止字段上的简单单击导致的误报)。
https://stackoverflow.com/questions/9609731
复制相似问题