当类型为文本时,将输入框限制为仅数字

Posted

技术标签:

【中文标题】当类型为文本时,将输入框限制为仅数字【英文标题】:Restrict input box to only numbers when type is text 【发布时间】:2018-06-17 23:37:03 【问题描述】:

当类型为文本时,我需要一个输入框,仅限制为数值。我看了一下这个答案,但它似乎不起作用。 html text input allows only numeric input

<input type="text" onKeyPress=(event) => 
    if (event.charCode >= 48 && event.charCode <= 57 || event.charCode >= 96 && event.charCode <= 105) 
        return true;
     else 
        return false;
    
  
  className="form-control"
  maxLength="5"
  ref="zip"
  placeholder="Enter Zip Code" />

【问题讨论】:

注意像这样改变条件: if ((event.charCode >= 48 && event.charCode = 96 && event.charCode 【参考方案1】:

由于您使用的是 React,您可以将 &lt;input&gt; 设为受控组件并决定何时更改状态:

class ZipCodeInput extends React.Component 
  state = 
    value: ""
  

  render() 
    return (
      <input
        type="text"
        onChange=(event) => 
          if (isNaN(Number(event.target.value))) 
            return;
           else 
            this.setState( value: event.target.value );
          
        
        maxLength="5"
        placeholder="Enter Zip Code"
        value=this.state.value
      />
    );
  

我修改了条件以试图使意图更明显。

【讨论】:

【参考方案2】:

您可以在 HTML 中使用数字类型的输入标签。 HTML 支持标准数字输入类型。 公式是这样的。

input type="number" placeholder="输入邮政编码"

【讨论】:

我没有使用数字类型,因为它在输入框上添加了增量箭头【参考方案3】:

我已经在https://codepen.io/anon/pen/gooyEy 整理了另一种实现此目的的方法。

代码如下:

<input
  type="text"
  autofocus
  onkeypress="return onlyNumbers(event)"/>
const onlyNumbers = (event) => 
  return !isNaN(event.key);

如果您正在寻找单线,也可以使用它:

<input
  type="text"
  onkeypress="return !isNaN(event.key)"/>

【讨论】:

以上是关于当类型为文本时,将输入框限制为仅数字的主要内容,如果未能解决你的问题,请参考以下文章

无法将文本框的输入限制为数字 C# [重复]

将 ASP.NET 文本框呈现为 HTML5 输入类型“数字”

jquery屏蔽数字输入

js怎么控制文本框只能输入数字

js怎么控制文本框只能输入数字

kendo数字文本框配置,用于在文本框中输入时仅限制两个十进制值