Javascript Can';t删除动态添加的冒号

Javascript Can';t删除动态添加的冒号,javascript,jquery,regex,Javascript,Jquery,Regex,我需要一个函数,在输入中键入两个数字后添加冒号(:),我在StackOverflow上也找到了这个函数,这正是我需要的。它在键入第二个数字后添加冒号,并且不允许您添加超过4个数字 然而,有一个问题我无法理解和解决。我需要能够删除所有数字,但它不允许我删除。我只能删除最后两个,而您不能删除冒号 以下是当前代码: var time = document.getElementsByClassName('time'); for (var i = 0; i < time.length; i++) {

我需要一个函数,在输入中键入两个数字后添加冒号(:),我在StackOverflow上也找到了这个函数,这正是我需要的。它在键入第二个数字后添加冒号,并且不允许您添加超过4个数字

然而,有一个问题我无法理解和解决。我需要能够删除所有数字,但它不允许我删除。我只能删除最后两个,而您不能删除冒号

以下是当前代码:

var time = document.getElementsByClassName('time');
for (var i = 0; i < time.length; i++) {
    time[i].addEventListener('keyup', function (e) {
        var reg = /[0-9]/;
        if (this.value.length == 2 && reg.test(this.value)) this.value = this.value + ":"; //Add colon if string length > 2 and string is a number 
        if (this.value.length > 5) this.value = this.value.substr(0, this.value.length - 1); //Delete the last digit if string length > 5
    });
};
var time=document.getElementsByClassName('time');
对于(变量i=0;i5)this.value=this.value.substr(0,this.value.length-1);//如果字符串长度>5,则删除最后一位数字
});
};

您可以使用
e.keyCode

它起作用了

更新:您还可以使用如下数字限制用户。它也起作用

//在文本框中按下键时调用
$(“.time”)。按键(功能(e){
//如果字母不是数字,则不要键入任何内容
如果(e.which!=8&&e.which!=0&&e.which<48 | e.which>57)){
返回false;
}
其他的
{
var reg=/[0-9]/;
如果(this.value.length==2&®.test(this.value))this.value=this.value+“:”;//如果字符串长度大于2且字符串是数字,则添加冒号
如果(this.value.length>4)this.value=this.value.substr(0,this.value.length-1);//如果字符串长度>5,则删除最后一位数字
}
});

您可以使用
e.keyCode

它起作用了

更新:您还可以使用如下数字限制用户。它也起作用

//在文本框中按下键时调用
$(“.time”)。按键(功能(e){
//如果字母不是数字,则不要键入任何内容
如果(e.which!=8&&e.which!=0&&e.which<48 | e.which>57)){
返回false;
}
其他的
{
var reg=/[0-9]/;
如果(this.value.length==2&®.test(this.value))this.value=this.value+“:”;//如果字符串长度大于2且字符串是数字,则添加冒号
如果(this.value.length>4)this.value=this.value.substr(0,this.value.length-1);//如果字符串长度>5,则删除最后一位数字
}
});

您可以检查按下的键是否是数字,而不是检查
delete
backspace

if (keycode >= 48 && keycode <= 57) {
  if (this.value.length == 2 && reg.test(this.value)) this.value = this.value + ":"; //Add colon if string length > 2 and string is a number 
  if (this.value.length > 5) this.value = this.value.substr(0, this.value.length - 1); //Delete the last digit if string length > 5
}
如果(keycode>=48&&keycode 2且字符串是一个数字
如果(this.value.length>5)this.value=this.value.substr(0,this.value.length-1);//如果字符串长度>5,则删除最后一位数字
}

您可以检查按下的键是否是数字,而不是检查
delete
backspace

if (keycode >= 48 && keycode <= 57) {
  if (this.value.length == 2 && reg.test(this.value)) this.value = this.value + ":"; //Add colon if string length > 2 and string is a number 
  if (this.value.length > 5) this.value = this.value.substr(0, this.value.length - 1); //Delete the last digit if string length > 5
}
如果(keycode>=48&&keycode 2且字符串是一个数字
如果(this.value.length>5)this.value=this.value.substr(0,this.value.length-1);//如果字符串长度>5,则删除最后一位数字
}

既然您已经倾向于使用
regex
,那么为什么不使用它来格式化
输入
字段中的时间?请参见下面的演示:

document.getElementsByClassName('time')[0]。addEventListener('keyup',函数(e){
this.value=this.value
.replace(//[^\d]/g',)//只允许数字
.replace(//^([\d]{4})\d+$/g,$1')//限制为4个字符
.replace(//\B(?=(\d{2})+(?!\d{1}))/g,“:”;//放置冒号
});
既然您已经倾向于使用
regex
,那么为什么不使用它来格式化
输入
字段中的时间?请参见下面的演示:

document.getElementsByClassName('time')[0]。addEventListener('keyup',函数(e){
this.value=this.value
.replace(//[^\d]/g',)//只允许数字
.replace(//^([\d]{4})\d+$/g,$1')//限制为4个字符
.replace(//\B(?=(\d{2})+(?!\d{1}))/g,“:”;//放置冒号
});

我给出了你的JSFIDLE示例,我想它可以按照你的意愿工作。你可能希望看到一种不同的实现方法。如果你快速键入键,你不会得到
我给出了你的JSFIDLE示例,我想它可以按照你的意愿工作。你可能希望看到一种不同的实现方法。如果你快速键入键,你会得到不需要
嗯,这个不再加冒号等。但是谢谢你的建议,会考虑到未来!嗯,这个不再加冒号等。但是谢谢你的建议,会考虑到未来!@Plavookac让我知道你的想法,谢谢!@Plavookac让我知道你的想法,谢谢!@Plavookac欢迎:)。我还更新了“this.value=this.value.replace(/[^\d]/g,”)以获得digitoh限制用户,实际上现在它正在删除:另外,当你添加限制时,请键入所有4个数字以查看。:@Plavookac我找到了另一个数字限制解决方案,我将在几天后更新minutes@Plavookac欢迎光临:)。我还更新了“this.value=this.value.replace(/[^\d]/g,”)以获得digitoh限制用户,实际上现在它正在删除:另外,在添加限制时,键入所有4个数字以查看:@Plavookac我找到了另一个数字限制解决方案,我将在几分钟内更新
if (keycode >= 48 && keycode <= 57) {
  if (this.value.length == 2 && reg.test(this.value)) this.value = this.value + ":"; //Add colon if string length > 2 and string is a number 
  if (this.value.length > 5) this.value = this.value.substr(0, this.value.length - 1); //Delete the last digit if string length > 5
}