如何覆盖 HTML5 输入数字步进功能?使用 jQuery
How to override HTML5 input number step function? Using jQuery
我想更改我的网络应用程序 HTML5 数字输入的步骤。我想要 100 x 100 而不是 1 x 1。
我试过这个:
$("#mynumberinput").keydown(function(e){
if (e.keyCode == 38) // Arrow-Up
{
$(this).val(parseInt($(this).val() + 100));
}
if (e.keyCode == 40) // Arrow-Down
{
$(this).val(parseInt($(this).val() - 100));
}
});
但是没用。我怎样才能做到这一点?
更改元素本身的 step
属性:
<input type="number" step="100" />
或者如果你不能直接修改HTML,你可以使用jQuery的attr
方法:
$("#mynumberinput").attr('step', 100);
似乎实际问题是您想让用户输入一个数字,然后然后让它增加或减少 100。您当前代码的问题是您您没有将值转换为数字,因此您遇到了所谓的 字符串连接 。要解决此问题,只需在增加或减少值之前将它们转换为数值即可:
$('input').on('keyup', function(e) {
if (e.which === 38)
this.value = +this.value + 99;
else if (e.which === 40)
this.value = +this.value - 99;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" />
请注意,我使用的是 99 而不是 100。这允许浏览器对其进行初始处理。如果您的 step
值不是 1
,您将需要自己抵消这个。
我认为输入步骤的答案是正确的,但关于 JQuery 我认为你应该只在 val 上使用 parseInt,然后减去。
$(this).val(parseInt($(this).val()) - 100);
我想更改我的网络应用程序 HTML5 数字输入的步骤。我想要 100 x 100 而不是 1 x 1。
我试过这个:
$("#mynumberinput").keydown(function(e){
if (e.keyCode == 38) // Arrow-Up
{
$(this).val(parseInt($(this).val() + 100));
}
if (e.keyCode == 40) // Arrow-Down
{
$(this).val(parseInt($(this).val() - 100));
}
});
但是没用。我怎样才能做到这一点?
更改元素本身的 step
属性:
<input type="number" step="100" />
或者如果你不能直接修改HTML,你可以使用jQuery的attr
方法:
$("#mynumberinput").attr('step', 100);
似乎实际问题是您想让用户输入一个数字,然后然后让它增加或减少 100。您当前代码的问题是您您没有将值转换为数字,因此您遇到了所谓的 字符串连接 。要解决此问题,只需在增加或减少值之前将它们转换为数值即可:
$('input').on('keyup', function(e) {
if (e.which === 38)
this.value = +this.value + 99;
else if (e.which === 40)
this.value = +this.value - 99;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" />
请注意,我使用的是 99 而不是 100。这允许浏览器对其进行初始处理。如果您的 step
值不是 1
,您将需要自己抵消这个。
我认为输入步骤的答案是正确的,但关于 JQuery 我认为你应该只在 val 上使用 parseInt,然后减去。
$(this).val(parseInt($(this).val()) - 100);