我们在<input type =“number”/>

时间:2018-04-17 03:51:22

标签: javascript reactjs

我在我的代码中定义了以下元素。

    <input type="number"
       id="phone"
       required
       data-length="10"
       defaultValue={this.state.formValues.phone}
       onInput={(e) => {
          e.target.value = Math.max(0, parseInt(e.target.value)).toString().slice(0, 10)
       }}
    />

这里的问题是每当我按下'E,+, - '键时,数字字段中的完整值就会变清楚。所以我只想要一个解决方案来阻止这个字段取值'E,+, - ',并且当按下任何一个键时它也不应该清除该值。

1 个答案:

答案 0 :(得分:0)

输入类型编号有点不同,它会让你输入不是数字的字符,但当你输入的值将为空时,一个解决方法是删除type =“number”并添加一个if用于检查解析的输入值是否不是数字的语句,如果用户在输入为空时输入一个字母,如果他在一个数字后面输入了一个字母,那么parseInt只会得到该数字直到该字母。

您可以在此处查看工作示例

document.getElementById("phone").oninput = function(e){
    var inputValue = parseInt(e.target.value);
    if (isNaN(inputValue)){
      inputValue = 0;
    }
    e.target.value = Math.max(0, parseInt(inputValue)).toString().slice(0, 10)
};
<input id="phone"
       required
       data-length="10"
       defaultValue={this.state.formValues.phone}
    />