将常规文本输入转换为DD / MM / YYYY格式

时间:2018-08-31 23:43:09

标签: javascript jquery

我只能使用rsync -avz root@107.180.3.68:~/public_html/wp-content/themes public_html/wp_content/themes ,并且计划在用户在输入字段中输入时获得type="text"格式。

到目前为止,我设法获得DD/MM/YYYY。年份应为DD/MM/YY/Y格式。我该怎么办?

YYYY
$('[data-type="date"]').keyup(function() {
      var value = $(this).val();
      value = value.replace(/\D/g, "").split(/(?:([\d]{2}))/g).filter(s => s.length > 0).join("/");
      $(this).val(value);
});

4 个答案:

答案 0 :(得分:3)

您可以尝试为此使用外部插件。快速搜索显示其中一些,包括problem with views

这是它应该如何工作的:

$(document).ready(function(){
  $('.date').mask('00/00/0000');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js"></script>
<input type="text" class="date">

不过,请不要忘记验证输入。

答案 1 :(得分:0)

您可以使用以下解决方案将常规文本输入转换为DD/MM/YYYY格式:

$('[data-type="date"]').keyup(function(event) {
    var value = $(this).val();
    if (event.keyCode !== 8 && value.indexOf("/") === value.lastIndexOf("/")) {
        if (value.length > 2 && value[2] != "/") {
            value = value.substring(0, 2) + "/" + value.substring(2);
        } 

        if (value.length > 5 && value[5] != "/") {
            value = value.substring(0, 5) + "/" + value.substring(5);
        }
    }
    $(this).val(value);
});

答案 2 :(得分:0)

您可以使用jQuery Mask Plugin。对于installation information

$('[data-type="date"]').mask('00/00/0000');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js"></script>
<input type="text" pattern="[0-9]*" data-type="date" maxLength="10" id="date" class="form-control" placeholder="DD/MM/YYYY">

答案 3 :(得分:0)

这将做您想要的。它使用Array.reduce/'s放入日期字符串中,测试我们是否已经过了月份,或者是否已经在字符串末尾,以便不放入/不应该发生的地方。

$('[data-type="date"]').keyup(function() {
      var value = $(this).val();
      value = value.replace(/\D/g, "")
                   .split(/(..)/)
                   .filter(s => s.length > 0)
                   .reduce((t, v, i, a) => t + v + (i > 1 || i == a.length - 1 ? '' : '/'), '');
      $(this).val(value);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<input type="text" pattern="[0-9]*" data-type="date" maxLength="10" id="date" class="form-control" placeholder="DD/MM/YYYY">