Javascript 删除键盘上输入的字母会删除数字吗?
我试图构建一个电话输入,当用户输入一个字母时,我试图使用Javascript 删除键盘上输入的字母会删除数字吗?,javascript,Javascript,我试图构建一个电话输入,当用户输入一个字母时,我试图使用this.value.slice(0,-1)立即删除该字符输入,但这会删除最后一个数字。有人能解释这是怎么发生的吗 JS var isNumber = validateNumber(event); if (isNumber) { if (inputLength == 3) { this.value = this.value + '-'; } else if (inputLen
this.value.slice(0,-1)
立即删除该字符输入,但这会删除最后一个数字。有人能解释这是怎么发生的吗
JS
var isNumber = validateNumber(event);
if (isNumber) {
if (inputLength == 3) {
this.value = this.value + '-';
} else if (inputLength == 7) {
this.value = this.value + '-';
}
} else {
var newValue = this.value.slice(0, -1);
this.value = newValue;
}
Fiddle:我想这都是因为您使用的事件类型。”在实际更改发生之前发送“Keydown”。因此,您可以尝试使用
event.preventDefault()代码>当检测到错误字符时正确。我对您的JSFIDLE做了两个更改,以使代码按预期运行:
- 切换到
keyup
事件。我认为您的第一个问题是,当您的代码执行时,还没有将字母附加到value
- 您对
slice
函数使用了错误的参数。考虑这两个选项:
this.value.slice(0,this.value.length-1)
this.value.slice(0,-1)
第二个选项将获取除最后一个字符以外的所有字符串(值
)。这就是-1
索引的工作方式
以下是更新后的函数:
telInput.addEventListener('keyup', function (event) {
var inputValue = this.value,
inputLength = inputValue.length;
var val = validateNumber(event);
if (val) {
if (inputLength == 3) {
this.value = this.value + '-';
} else if (inputLength == 7) {
this.value = this.value + '-';
}
} else {
var newValue = this.value.slice(0, this.value.length-1);
this.value = newValue;
}
});
记住,你正在努力完成的事情是非常困难的。如果我把我贴上去呢。文本?你的事件甚至不会触发。我习惯于做面具。恐怕这件事必须是直截了当的。在正确的位置添加事件。preventDefault()
:如果我改为keyup,我可以通过添加破折号轻松跳过,如果我很快输入数字,你知道如何避免吗?