【问题标题】:Validating a html text input field as a match for any date format验证 html 文本输入字段是否匹配任何日期格式
【发布时间】:2014-03-29 13:22:45
【问题描述】:

我有一个文本输入字段,可以在其中输入日期。由于各种原因,我无法使用日期选择器。我希望能够以任何格式输入日期,例如 d/m/yy 或 dd/mm/yy 或 dd/mm/yyyy...等

输入其中一种格式并关闭后,我希望将文本值(假设输入有效)设置为 dd/mm/yyyy 格式的输入日期。例如,如果您输入了 1/3/14,我希望将文本设置为 01/03/2014。

到目前为止,我已经做到了这一点,但似乎不太正确:-

          $('.someDate').on("blur", function (event) {

                var dateRegEx = '^(?:(1[0-2]|0?[1-9])[- /.](3[01]|[12][0-9]|0?[1-9])|(3[01]|[12][0-9]|0?[1-9])[- /.](1[0-2]|0?[1-9]))[- /.](?:[0-9]{2})?[0-9]{2}$';
                var day = 0;
                var month = 0;
                var year = 0;
                var matchArray = $(this).val().match(dateRegEx);
                month = matchArray[0];
                day = matchArray[1];
                year = matchArray[2];
//work out what is the year, month, date etc and set the input text to this
    });

对此的任何帮助将不胜感激

【问题讨论】:

  • 什么以及为什么看起来不太正确?
  • @Simon,如果我输入 2014 年 1 月 3 日,我希望它会出现 1 代表日、3 代表月和 14 代表年。年份总是空白 - 我已尝试更改索引。
  • 所以你要求正确的正则表达式...
  • @Simon,我不擅长 RegEx,所以是的,那将是理想的。应该可以从那里完成剩下的工作。

标签: jquery regex date


【解决方案1】:

我用不同的方法为您的问题提供了一个工作小提琴,在我看来不那么复杂。首先,我尝试获取日期分隔符。然后我用这个日期分隔符分割日期并形成一个新日期。工作小提琴:http://jsfiddle.net/2dVwW/

HTML:

<input id="date" type="text" value="01.03.15" />
<button id="transform">Transform</button>Date formatted:<span id="dateFormatted"></span>

JavaScript:

$('#transform').click(function () {
    var date = $('#date').val();
    var sepRegEx = '(?:[- /.])';
    var sepArray = date.match(sepRegEx);

    if (!sepArray) {
        alert("Unknown seperator");
        return false;
    }

    var sep = sepArray[0];
    var dateArray = date.split(sep);
    var month = dateArray[0];
    var day = dateArray[1];
    var year = dateArray[2];

    if (month.length == 1) {
        month = '0' + month;
    } else if (month.length != 2) {
        alert("Wrong month format");
        return false;
    }

    if (day.length == 1) {
        day = '0' + day;
    } else if (month.length != 2) {
        alert("Wrong day format");
        return false;
    }

    if (year.length == 2) {
        year = '20' + year;
    } else if (year.length != 4) {
        alert("Wrong year format");
        return false;
    }

    var dateFormatted = day + '/' + month + '/' + year;
    $('#dateFormatted').text(dateFormatted);
});

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 2021-08-26
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多