简体   繁体   English

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

[英]Format both date and time together in the same input field

I have an input field that allows the user to enter both the time and date. 我有一个输入字段,允许用户输入时间和日期。 While the user types, I would like to format on keyup. 在用户键入时,我想在键入时进行格式化。 Would you guys by chance have a solution for this? 你们是否会为此提供解决方案? Here is my current code: 这是我当前的代码:

.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);
});

To achieve expected result, use below option 为了达到预期的效果,请使用以下选项

  1. Check validity of entered date 检查输入日期的有效性

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

  1. If date is valid , Split entered date in format- MMDDYYHHSS 如果日期有效,则以MMDDYYHHSS格式拆分输入的日期

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

  1. Add slashes ,colon , AM/PM to the splitted date using splice 使用拼接将斜杠,冒号,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 codepen- https: //codepen.io/nagasai/pen/GzLOKG ? editors = 1010

Input : 1222192311 输入:1222192311

Output: 12/11/2019 11:11 PM 输出:2019/12/11下午11:11

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM