我有一个输入字段,我只希望允许输入正整数和负整数。我使用 onkeyup() 跟踪他们的输入,因为这是跨浏览器最一致的。真正的问题出现在尝试替换非数字字符而不替换开头的破折号时。
if(e.keyCode < 48 || e.keyCode > 57) {
var data = e.target.value;
if(e.target.value.match(/^[-]?/))
e.target.value = '-' + data.substr(1).replace(/\D*/, "");
else
e.target.value = data.replace(/\D*/,"");
}
基本上这里发生的事情是当他们输入数字时我会忽略,但是对于其他所有内容都试图替换他们可能添加的不是数字的任何内容。现在的问题是当我按下退格键时,由于某种原因,破折号立即返回。
例如
,我的输入字段有: -
当我按退格键时。
我的输入字段保持不变: -
工作代码:
if(e.keyCode < 48 || e.keyCode > 57) {
var data = e.target.value;
if(e.target.value.match(/^[-]+/))
e.target.value = '-' + data.substr(1).replace(/\D/, "");
else { console.log('else');
e.target.value = data.replace(/\D/,"");
}
}