在输入字段中一起格式化日期和时间

时间:2019-02-20 17:02:50

标签: javascript jquery html

我有几个输入项,允许用户输入日期,输入时它将格式化数字01/25/2020。现在,我必须有一个允许用户在同一输入字段中输入时间的字段。我正在尝试保持类似的流程,该流程将随着用户的输入进行格式化。你们是否会为此提供解决方案?这是我当前的代码:

.on('keyup', '.type-date', function(e) {
    $(this).attr('maxlength', '10');
    var value = $(this).val();
    var key = e.keyCode;
    if (!(key >= 48 && key <= 57 && 8)) {
        $(this).val($(this).val().substring(0, $(this).val().length));
    }
    if (key == 8) {

    } else if (value.length == 2 || value.length == 5) {
        $(this).val($(this).val() + '/');
    }
    $('.type-date').attr('value', value);
});

1 个答案:

答案 0 :(得分:0)

要获得预期结果,请使用以下选项

  1. 检查输入日期的有效性

var错误=((typedate.slice(0,2)> 12)||(typedate.slice(2,4)> 31)||(typedate.slice(4,6)> 60)||( typedate.slice(6,8)> 24))? true:否

  1. 如果日期有效,则以MMDDYYHHSS格式拆分输入的日期

var date = $(this).val()。split('');

  1. 使用拼接将斜杠,冒号,AM / PM添加到拆分日期

$('.type-date').on('keyup', function(e) {
  $(this).attr('maxlength', '10');  
  var typedate =  $(this).val();
  var error = ((typedate.slice(0,2) > 12) || (typedate.slice(2,4) > 31) || (typedate.slice(4,6) > 60) || (typedate.slice(6,8) > 24)) ? true : false
  if(!error && typedate.length === 10){
     var date = $(this).val().split('');
    date.splice(2, 0, "/");
    date.splice(5, 0, "/20");
    date.splice(8, 0, " ");
    date.splice(11, 0, ":");
    typedate.slice(6, 8) > 12
      ? date.splice(14, 0, " PM")
    : date.splice(14, 0, " AM");
    var time =
        typedate.slice(6, 8) > 12 ? typedate.slice(6, 8) - 12 : typedate.slice(6, 8);
    time = time < 10 ? "0" + time : time;
    date.splice(9, 2, ...time.toString().split(""));

  $('.result').text(date.join(''));
  }else{
    $('.result').text('Invalid Date');
  }   
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="type-date">
Date: <span class="result"></span>

codepen-https://codepen.io/nagasai/pen/GzLOKG?editors=1010

输入: 1222192311

输出: 12/11/2019 11:11 PM