如何在输入文本中设置唯一可能的值

Posted

技术标签:

【中文标题】如何在输入文本中设置唯一可能的值【英文标题】:How to set the only possible values in an input text 【发布时间】:2018-11-09 08:10:30 【问题描述】:

我有一个输入文本表单,需要在其中插入一个从 1 到 10 的值。

我尝试使用掩码对其进行自定义,但它使我写入超过 10 的值,我如何将唯一可能的值设置为从 1 到 10 而不是更少或更多?

表格 input type="text" name="level" id="level"

我用来使它只接受数字并使其长度为 2 位的掩码

function maskFormatterForLvl(val) 
$(val).mask("ZZ", 
    translation: 
        'Z': 
            pattern: /[0-9]/,
            optional: true
        
    
);

;

我尝试使用“max”属性,但它不起作用,可能是因为我是 javascript 新手

【问题讨论】:

为什么不在 html5 中使用输入数字字段? 它必须是文本类型,不是吗? 您可以隐藏箭头。检查我的答案中的更新部分 【参考方案1】:

如果您的输入字段值是数字,那么您可以使用输入类型 'number' 。 min 和 max 属性表示要输入的数字范围。希望这更简单。

<input type="number" min="0" max="10">

更新

为了隐藏箭头,您可以使用以下内容。

/* Webkit browsers like Safari and Chrome */
    input[type=number]::-webkit-inner-spin-button, 
    input[type=number]::-webkit-outer-spin-button  
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        margin: 0; 
    
/* For Firefox */
    input[type='number'] 
       -moz-appearance:textfield;
    

【讨论】:

必须是type="text",因为数字类型显示的箭头,文本类型不可以一样吗?谢谢!! 如果你喜欢使用css,那么你可以隐藏那些箭头。@user9869431 当您使用箭头递增时,输入类型编号仅适用于 min 和 max。如果您键入数字,它将接受所有内容。您甚至可以将文本复制/粘贴到其中(但不能编写文本)。所以,如果没有一些 js 验证,它是行不通的 谢谢!!它解决了箭头的问题,但仍然可以写出大于 10 的数字!!! 是这样吗?我还没有考虑过。干得好。 @MihaiT【参考方案2】:

如果你必须使用type="text",你可以使用这个正则表达式

<input type="text" pattern="([0-9])|(10)">

【讨论】:

【参考方案3】:

您可以使用文本输入并只允许输入数字,并使用 charCode 。从 48 到 57 是从 0 到 9 的键盘数字。

如果它通过了这个验证,那么你检查它是否超过了你输入的最大值。

对于最小值,用户不能在0 下面输入一些东西,因为这样做他应该能够写-,它不会通过第一个条件(仅限数字)

const input = document.getElementById('level')
input.onkeypress =  function(e) 
    var ev = e || window.event;
    if (ev.charCode < 48 || ev.charCode > 57) 
      return false;
     else if (this.value * 10 + ev.charCode - 48 > this.max) 

      return false;
       else if (this.value * 10 + ev.charCode - 48 < this.min) 

      return false;
     else 
      return true;
    
  
&lt;input type="text" name="level" id="level" min="1" max="10" maxlength="2"&gt;

【讨论】:

谢谢!!但是如果我也不想要 0 怎么办?

以上是关于如何在输入文本中设置唯一可能的值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Golang 中设置文本输入的初始值?

excel同列中不能输入相同的数设置

如何在 Sql Server 2008 中设置唯一约束 [重复]

如何在 promise 中设置 react hook 的值?

如何在 promise 中设置 react hook 的值?

如何根据文本字段 Material UI 中设置的值将对象设置为状态