【发布时间】:2017-07-24 02:57:44
【问题描述】:
我有以下要求,如果没有手动输入这种格式 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,":");
}
});
【问题讨论】:
-
我会关闭自动提交,然后在点击处理程序中格式化您的时间。这样你就可以摆脱 keydown 处理程序。尝试通过 keydown 处理程序进行管理是一件令人头疼的事情。
-
双重执行没有问题,不知何故我需要避免从键盘输入冒号。它应该始终由脚本添加。
标签: javascript jquery