Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.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
Css 是否有一种方法可以停止手动输入type=number,但仍允许使用“更改”进行更改;“向上/向下”;按钮?_Css_Html - Fatal编程技术网

Css 是否有一种方法可以停止手动输入type=number,但仍允许使用“更改”进行更改;“向上/向下”;按钮?

Css 是否有一种方法可以停止手动输入type=number,但仍允许使用“更改”进行更改;“向上/向下”;按钮?,css,html,Css,Html,我有一个意见: <input type="number" name="amount" min="4" max="6" step="2" value="4" id="amount" /> 我没有一个正常的提交按钮来提交信息(使用javascript) type=number工作正常,但是用户仍然可以输入他们想要的任何数字,我想阻止用户输入,但是仍然允许使用type=number显示的“向上/向下”箭头进行更改。我试过研究,但什么也找不到。这可能吗?是否有任何理由避免使用下拉式选择

我有一个意见:

<input type="number" name="amount" min="4" max="6" step="2" value="4" id="amount" />

我没有一个正常的提交按钮来提交信息(使用javascript)


type=number工作正常,但是用户仍然可以输入他们想要的任何数字,我想阻止用户输入,但是仍然允许使用type=number显示的“向上/向下”箭头进行更改。我试过研究,但什么也找不到。这可能吗?

是否有任何理由避免使用下拉式
选择标签?
这将为用户提供非常有限的数字选择(设置为您的首选项)。
您甚至可以使用PHP或JavaScript使用数字1到100(或您选择的任何数字)填充
字段,这样您就不必在HTML代码中手动键入每个数字

<select>
  <option value='1'>1</option>
  <option value='2'>2</option>
  <option value='3'>3</option>
</select>

1.
2.
3.

编辑以阻止复制/粘贴:

<script type="text/javascript">
document.getElementById('amount').onkeypress = function(e) { e.preventDefault(); };

document.getElementById('amount').onkeydown = function(e) {
    if(e.keyCode != 38 && e.keyCode != 40)
        e.preventDefault();
};

if(document.addEventListener)
    document.getElementById('amount').addEventListener('contextmenu',function(e) { e.preventDefault();
},false);
</script>

document.getElementById('amount').onkeypress=函数(e){e.preventDefault();};
document.getElementById('amount').onkeydown=函数(e){
如果(e.keyCode!=38&&e.keyCode!=40)
e、 预防默认值();
};
if(文件增补列表器)
document.getElementById('amount').addEventListener('contextmenu',函数(e){e.preventDefault();
},假);

然后,您可以为关闭JavaScript的用户添加一个
标记,并向他们显示
元素等。

作为一个选项,用户应该能够在字段中键入内容。虽然可以部分防止这种情况(即当启用了JavaScript并且代码中的事件处理程序涵盖了用户可能使用的方式时),但是当您特别不想获得其基本功能时,使用元素是没有意义的


如果您只想允许两个值4和6(从您的示例中可以看出),并且您想防止用户只键入其中一个,然后您应该使用一个
select
元素或一组两个单选按钮。

虽然我不确定step属性的作用,但可以确定您可以根据下面代码中的要求找到使用它的方法

下面的代码确保允许的值仅在指定的“最小”和“最大”属性之间 代码使用的是jquery1.10以后的版本

var prevVal = 0;
$("input[type=number]").on("keydown", function(e){
    prevVal = Number($(this).val());
});
$("input[type=number]").on("keyup", function(e){
   var minVal = $(this).attr("min");
    var maxVal = $(this).attr("max");
    var step= $(this).attr("step");
    var currentVal = $(this).val();
    if(!(currentVal<=maxVal&&currentVal>=minVal)){
        $(this).val(prevVal)
    }

});
var-prevVal=0;
$(“输入[类型=数字]”)。在(“向下键”上,函数(e){
prevVal=数字($(this).val());
});
$(“输入[类型=数字]”)。在(“键控”上,函数(e){
var minVal=$(this.attr(“min”);
var maxVal=$(this.attr(“max”);
var step=$(this.attr(“step”);
var currentVal=$(this.val();
如果(!(currentVal=minVal)){
$(this).val(prevVal)
}
});

试试看,老兄,我的问题解决了

var-prevVal=0;
$(“输入[类型=数字]”)。在(“向下键”上,函数(e){
prevVal=数字($(this).val());
});
$(“输入[类型=数字]”)。在(“键控”上,函数(e){
var minVal=$(this.attr(“min”);
var maxVal=$(this.attr(“max”);
var step=$(this.attr(“step”);
var currentVal=$(this.val();
如果(!(currentVal>=1)){
$(this.val(1)
}

});嗯,这很有趣,它比我解释的稍微复杂一些(有一些设置会改变输入编号),但我可能可以通过选择使其工作。非常感谢。你的建议很好,但不幸的是,它没有回答所问的问题。也许这个问题应该被编辑。这并没有阻止我在字段中粘贴一个数字。这个技巧会奏效的