使用Jquery自动格式化秒表时间输入

时间:2017-06-03 03:40:17

标签: javascript jquery

我在我的网站上有一个输入,允许人们把他们的时间放在一起,并希望它是一个秒表式的格式。

这是我到目前为止所拥有的: https://jsfiddle.net/k4q3x0hd/3/

$('.time_score').keydown(function(event) {

  // skip for arrow keys
  if(event.which >= 37 && event.which <= 40) return;

  // format number
    $(this).val(function(index, value) {
        return value.replace(/\D/g, "").replace(/\B(?=(\d{2})+(?!\d))/g, ":");
    });
});

我需要它做的是说明如果有人投入60(秒),它自动格式化为00:60:00。

有什么方法可以格式化它以允许它自动添加00在60之前和之后但仍保留用户输入完整min:sec:mil时间设置的能力。

我是正则表达式的新手并试图弄清楚,如果这是一个简单的修复,请原谅我。

添加了更多详细信息:

用户将输入体育赛事的活动时间,输入格式为00:00:00(最小值:秒数:毫秒数)。如果用户在60秒内完成一个事件,那么得分者只需输入60而不是00:60:00,我想找到一种检查条目的方法,这样如果他们放了一半就会纠正它以添加00:in前面或弹出一条解释正确格式的信息

1 个答案:

答案 0 :(得分:1)

如果您真的想使用正则表达式,请尝试以下方法:^(?:\d{2}:){2}\d{2}$。从技术上讲,你也可以使用^(?:\d\d:){2}\d\d$,我猜这实际上是2个字符。两者都完成了同样的事情:只有&#34; 00:00:00&#34;应该最终匹配,所以如果你串起来那么你可以用00:{user value}:00替换它。

Javascript可以快速测试正则表达式的字符串:/regex/.test(string)

如此完整:

var regex = /^(?:\d{2}:){2}\d{2}$/;

$(".time_score").blur(function() {
  var value = $(this).val();
  if (!regex.test(value)) {
    $(this).val("00:" + value + ":00");
  }
});

这是一个更新的工作示例:https://jsfiddle.net/k4q3x0hd/16/

从你的代码中,我将其更改为模糊,只是为了防止每次有人输入内容时(就像你的keydown一样)。