Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以禁用';步骤';输入类型编号_Javascript_Jquery_Html - Fatal编程技术网

Javascript 是否可以禁用';步骤';输入类型编号

Javascript 是否可以禁用';步骤';输入类型编号,javascript,jquery,html,Javascript,Jquery,Html,我想知道是否有可能覆盖浏览器步进行为,或者在步进之前拦截并更改步进值,或者防止步进作为输入类型编号的函数发生 例如,当使用向上和向下递增/递减箭头/滚动步进等进行递增时,我希望在发生之前操纵步进过程 例如: 我试着不给步骤属性。这不起作用 Step属性只接受值“all”和数字,不接受false 因此,我无法使用任何属性禁用它。我还尝试过使用逐步上升和逐步下降功能,但当浏览器的逐步上升功能出现时,不会调用这些功能 我基本上希望它或者根本不单步执行,或者如果它执行单步执行,则执行一个自定义单步执

我想知道是否有可能覆盖浏览器步进行为,或者在步进之前拦截并更改步进值,或者防止步进作为输入类型编号的函数发生

例如,当使用向上和向下递增/递减箭头/滚动步进等进行递增时,我希望在发生之前操纵步进过程

例如:


我试着不给步骤属性。这不起作用

Step属性只接受值“all”和数字,不接受false

因此,我无法使用任何属性禁用它。我还尝试过使用逐步上升和逐步下降功能,但当浏览器的逐步上升功能出现时,不会调用这些功能

我基本上希望它或者根本不单步执行,或者如果它执行单步执行,则执行一个自定义单步执行函数,在该函数中,我根据其当前值确定单步执行值

我试图修改更改,但这似乎不适用于当前步骤,只适用于下一步

下面是javascript:

$("#num").on("keyup change focusin focusout", function (e) {
    $(this).attr("step", getStep($(this).val()));
});

function getStep (val) {
    val = parseFloat(val);
    var step = 1;
    if (val < 5) {
        console.log('here');
        step = 2;
    }  else if (val < 10) {
        step = 5;
    }
    return step;
}
$(“#num”)。打开(“键控更改焦点输入焦点输出”,函数(e){
$(this.attr(“step”,getStep($(this.val()));
});
函数getStep(val){
val=parseFloat(val);
var阶跃=1;
if(val<5){
console.log('here');
步骤=2;
}否则如果(val<10){
步骤=5;
}
返回步骤;
}

这里,如果我输入5,它应该增加5,但它增加1。下次它会增加5。如果可能,我希望在单步执行之前覆盖步长值


我不是想通过使用文本输入来解决这个问题,我只是想确定是否有方法覆盖步进功能。

不确定这是否是您想要的,但我会尝试一下

WebKit桌面浏览器添加了一些小的上下箭头来对输入进行编号,称为微调器。您可以按如下方式直观地关闭它们:

input[type=number]::-webkit-inner-spin-button, 
input[type=number]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
资料来源:

编辑

解决了!这是小提琴


你是在问如何禁用键盘功能吗?我不希望它允许通过键盘或鼠标执行单步功能。Javascript解决方案也是受欢迎的。那么,为什么不使用带有Javascript验证的文本输入呢?@Arathisrekumar只需按照建议使用文本输入,并按照您被告知的那样对表单输入进行验证(如果number//null//blank which you want),它将按照您所希望的方式工作。听起来像是这样,这只是隐藏了箭头。但我仍然可以使用鼠标滚动来逐步完成。不是我要找的。终于解决了!检查小提琴我使用的是mac电脑,我有滚动鼠标,我仍然可以用鼠标滚动来改变数值。但是+1表示键盘禁用。它在firefox上不起作用。我已经更新了以实现以下目标:允许复制/粘贴/选择数值(Ctrl C/V/A);不允许粘贴字母字符(包括e);禁用箭头键;禁用鼠标滚动;隐藏标准
type=“number”
输入可见的步骤指示器
input[type=number]::-webkit-inner-spin-button, 
input[type=number]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
  $(document).ready(function() {
    $("input[type=number]").on("focus", function() {
        $(this).on("keydown", function(event) {
            if (event.keyCode === 38 || event.keyCode === 40) {
                event.preventDefault();
            }
        });
    });

});