使用jquery / javascript格式化小时分钟

时间:2016-02-29 08:57:33

标签: javascript time onchange time-format

嗨,我正在尝试与时间合作,但无法这样做。

我有一个文本字段,默认情况下我会得到时间。当用户改变我正在运行jquery change事件的时间来检查时间值。如果小时和分钟在允许的范围内。

一切都很好。 但是当用户输入60分钟时,我无法添加+1小时。例如:如果用户输入10:60,那么时间应该改为11:00,而我不会得到101:00

我解决了。我忘了将格式更改为parseInt()。添加后解决了我的问题。

为了您的考虑,我正在添加一个代码段。

$(document).ready(function() {
  var currentdate = new Date();
  var datetime = currentdate.getHours() + ":" + currentdate.getMinutes();
  //console.log(datetime);
  $("#test").val(datetime);

  $("#test").change(function() {

    var time = $("#test").val();
    var patt = /^[0-9:]{1,5}$/igm;
    var res = patt.test(time);
    if (res === true) {

      if ($(this).val().length < 3) {
        alert('Invalid Time Format');

      } else {
        var arr = time.split(":");
        MyDateString = ('0' + arr[0]).slice(-2) + ":" + ('0' + arr[1]).slice(-2);
        $('#test').val(MyDateString);
        if (arr[1] == 60) {
          if (arr[0] == 24) {
            $('#test').val(function(index, value) {
              return value.replace('24', '01');
            });
            $('#test').val(function(index, value) {
              return value.replace('60', '00');
            });
          } else if (arr[0] > 24) {
            alert('Time is invalid');
          } else {
            $('#test').val(function(index, value) {
              console.log(value);
              var arr = time.split(":");
              var val = arr[0] + 1;
              console.log(val);
              return value.replace(arr[0], parseInt(arr[0]) + 1);
            });
            $('#test').val(function(index, value) {
              return value.replace('60', '00');
            });
          }
        } else if (arr[1] < 60) {
          if (arr[0] == 24) {
            $('#test').val(function(index, value) {
              return value.replace('24', '00');
            });
          }
        } else {
          alert('Time is invalid');

        }
      }
    } else {
      alert('Invalid Time Format');

    }

  });



});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<input type="test" id="test" value="Hello" />

2 个答案:

答案 0 :(得分:1)

替换此行

return value.replace(arr[0], arr[0] + 1);

return value.replace(arr[0], arr[0] - 0 + 1); //0 is reduced so that arr[0] is converted to Number first

return value.replace(arr[0], Number(arr[0]) + 1); 

答案 1 :(得分:0)

我解决了。我忘了将格式更改为parseInt()。一旦添加解决了我的问题。