表格

时间:2017-03-03 21:01:28

标签: javascript jquery

我有以下要求,在表格的时间字段中,如果不是以这种格式手动键,则应自动添加冒号hh:mm:ss

我有以下代码,它可以自动填充,但如果用户键冒号手动添加两个冒号,如hh :: m:ss

有人可以帮忙解决这个问题吗?

JSP:

<b:form-group label="${runtime}" labelFor="runtime" cssLabel="col-sm-2" cssBody="col-sm-2" cssClass="required">
    <form:input path="runTime" cssClass="form-control" required="required" maxlength="8"/>
    <form:errors path="runTime" cssClass="validate-error"/>
</b:form-group>

JS:

$('#runTime').on('keydown', function(e) {
    if(e.keyCode != 8 && (this.value.length === 2 || this.value.length === 5)) {
        this.value += ":";
    }
});

更新答案

我们必须在崩溃之前使用 chiliNUT 回答添加额外的检查,否则选择所有并且点击删除/退格按钮在Chrome浏览器中不起作用。

$('#runTime').on('keydown', function(e) {
    //your code
    if(e.keyCode != 8 && (this.value.length === 2 || this.value.length === 5)) {
        this.value += ":";
    }
    //collapse double colons
    if(this.value.endsWith("::")) {
        this.value=this.value.replace(/:+/g,":");
    }
});

1 个答案:

答案 0 :(得分:1)

在keydown之后折叠双冒号

$('#runTime').on('keydown', function(e) {
    //your code
    if(e.keyCode != 8 && (this.value.length === 2 || this.value.length === 5)) {
        this.value += ":";
    }
    //collapse double colons
    this.value=this.value.replace(/:+/g,":");
});

最后一行将查看字符串,然后获取1个或多个冒号的任何实例(连续冒号?:-))并将其转换为单个冒号