Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置用户键入值时的日期格式_Javascript_Regex_Date_Replace_Format - Fatal编程技术网

Javascript 设置用户键入值时的日期格式

Javascript 设置用户键入值时的日期格式,javascript,regex,date,replace,format,Javascript,Regex,Date,Replace,Format,关于日期的小问题。 我正在尝试设置用户键入值时的日期格式。因此,如果有人键入,例如2017,输入自动完成/(斜杠),然后用户填写月份和日期。 目前我有这段代码,但没有按预期工作。我的意思是,日期的格式必须是:YYYY/MM/DD $('input[name*=expire]').bind('keyup', function() { // Instance vars. var $this = $(this), value = $this.val(); // C

关于日期的小问题。 我正在尝试设置用户键入值时的日期格式。因此,如果有人键入,例如2017,输入自动完成/(斜杠),然后用户填写月份和日期。 目前我有这段代码,但没有按预期工作。我的意思是,日期的格式必须是:YYYY/MM/DD

$('input[name*=expire]').bind('keyup', function() {
    // Instance vars.
    var $this = $(this),
      value = $this.val();

    // Clear value to inter number.
    value = value.replace(/\D/g,"");

    value = value.replace(/(\d{4})/,"$1");
    value = value.replace(/(\d{2})(\d)/,"$1/$2");
    value = value.replace(/(\d{2})(\d)$/,"$1/$2");

    // Set interval to map click action.
    setTimeout(function () {
      $this.val(value);
    }, 1);
  });
使用此代码时,出于某种原因,返回的是
11/11111/1
,而不是
1111/11/11


提前感谢。

请注意,在用户输入时更改输入值会移动光标,从而使编辑现有值变得困难。无论如何,看起来您的第一个
.replace()
根本不起任何作用,因为替换字符串是匹配字符串的精确副本。第二个
.replace()。第三个
.replace()
匹配字符串末尾的三个数字,并在最后一个数字前插入一个
/
。这种自动格式化非常难正确。您可能最终会得到大量代码和笨重的UI,而没有任何好处。只需让用户键入一些内容并显示非阻塞消息,以告知是否有错误。Willian,您提到了
YYYY/MM/DD
格式,但为什么您只在正则表达式中使用
\d{2}
?我以为你是在
YY/MM/DD
format?我已经删除了我的答案,因为我不确定你需要什么。然而,
pattern=“\d{4}/\d{2}/\d{2}”
似乎是最好的解决方法。