我正在进行十进制数输入验证,我想阻止连续第二次输入'point'
在第一个时段按键后的输入框中,我不能连续第二次按键。
到目前为止我已经这样做了 -
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变为空。
答案 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
})