如何防止第二次输入相同的字符

时间:2018-03-30 11:03:35

标签: javascript reactjs

我正在进行十进制数输入验证,我想阻止连续第二次输入'point'

例如 - Input field

在第一个时段按键后的输入框中,我不能连续第二次按键。

到目前为止我已经这样做了 -

if (e.which === 190) {
   if(value === '') {
    e.preventDefault()
    this.setState({[error]: "Only one period allowed in decimal numbers!"});
    return false;
   }
}

但是这只能阻止第三次按键并允许第二次按下。

如何使用JavaScript阻止按键?

PS-我正在使用输入字段,如果是type-'number'。所以在我按下第二个点之后,e.target.value变为空。

2 个答案:

答案 0 :(得分:2)

您可以将正则表达式与onChange事件一起使用。

testHanlder = (event) => {

  let value = event.target.value;

  if (value) {
    value = value.replace(/\.+/g, ".")
    this.setState({value})
  }
}

答案 1 :(得分:0)

即使它通过第二个十进制数字问题,它仍然允许输入字段内的字母表。 相反,你可以使用: -

var textBox = document.getElementById("txt")

textBox.addEventListener("keyup",function(e) {
  var floatValue = parseFloat(textBox.value) || ""
  if(floatValue !== textBox.value) textBox.value = floatValue
})