Chrome 上的数字输入类型和 jquery.on('change') 函数的意外行为
Unexpected behavior of number input type and jquery .on('change') function on Chrome
我有一个数字输入类型和一个 jQuery .on('change')
函数,该函数在每次输入值更改时运行。
当使用 chrome 时,如果您连续单击输入上的箭头以增加或减少值(将鼠标留在箭头的可单击区域内),该函数会先触发几次,然后只是停止。如果您随后将鼠标移出箭头的可点击区域,JavaScript 函数就会运行。
有人知道我该如何处理吗?或者是否有任何解决方法。
请看下面的例子。
$('#number').on('change', function(){
console.log('change');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" id="number"/>
好吧,很容易避免。 Change
仅在元素丢失 focus
时触发。但是你在这里基本上做的是click
,所以使用那个事件和keyup
如果有人使用键盘输入一个值。
这是一个有效的 fiddle:
$('#number').on('keyup click', function(){
console.log('change');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" id="number"/>
另一个效果很好的事件是 input
。每次更改输入时都会触发(无论是通过单击还是按键输入):
$('#number').on('input', function(){
console.log('change');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" id="number"/>
我有一个数字输入类型和一个 jQuery .on('change')
函数,该函数在每次输入值更改时运行。
当使用 chrome 时,如果您连续单击输入上的箭头以增加或减少值(将鼠标留在箭头的可单击区域内),该函数会先触发几次,然后只是停止。如果您随后将鼠标移出箭头的可点击区域,JavaScript 函数就会运行。
有人知道我该如何处理吗?或者是否有任何解决方法。
请看下面的例子。
$('#number').on('change', function(){
console.log('change');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" id="number"/>
好吧,很容易避免。 Change
仅在元素丢失 focus
时触发。但是你在这里基本上做的是click
,所以使用那个事件和keyup
如果有人使用键盘输入一个值。
这是一个有效的 fiddle:
$('#number').on('keyup click', function(){
console.log('change');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" id="number"/>
另一个效果很好的事件是 input
。每次更改输入时都会触发(无论是通过单击还是按键输入):
$('#number').on('input', function(){
console.log('change');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" id="number"/>