如何在这个部门添加分隔符?

时间:2016-01-07 09:58:14

标签: javascript jquery

我有这个样本:

link

代码HTML:

<input id="date_of_birth" type="text" value="23091992" maxlength="8">

CODE JS:

$( "#date_of_birth" ).keyup(function() {
    var str=$(this).val();
    var day_str=str.substring(0,2);
    var month_str=str.substring(2,3);
    console.log(day_str);
    console.log(month_str);
});

我输入的值为

23091992

运行脚本后我想要做什么,我的文本格式如下。

23/09/1992

我试图分享我强大的两个并添加一个分隔符,但不幸的是我无法管理... 请问你能解决这个问题吗?

提前致谢!

3 个答案:

答案 0 :(得分:0)

你快到了。但相反,您可以使用:

<input type="date" />

或者有很多可用的datepicker插件。如果你想这样做,那么这就是解决方案:

$( "#date_of_birth" ).keyup(function() {
    var str=$(this).val();
    var day_str=str.substring(0,2);
    var month_str=str.substring(2,4);
    var year_str=str.substring(4,8);
    console.log(day_str);
    console.log(month_str);
    console.log(year_str);
    if ($(this).val().trim().length == 8)
        $(this).val(day_str + "/" + month_str + "/" + year_str);
});

<强>段

$("#date_of_birth").keyup(function() {
  var str = $(this).val();
  var day_str = str.substring(0, 2);
  var month_str = str.substring(2, 4);
  var year_str = str.substring(4, 8);
  console.log(day_str);
  console.log(month_str);
  console.log(year_str);
  if ($(this).val().trim().length == 8)
    $(this).val(day_str + "/" + month_str + "/" + year_str);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="date_of_birth" type="text" value="23091992" maxlength="8">
Press up or down. Trigger a keyup.

小提琴:http://jsfiddle.net/ufzr9hcm/

答案 1 :(得分:0)

你当然应该使用日期选择器或一些js掩盖输入, 但是......检查一下

$("#date_of_birth").keyup(function() {
  var t = $(this),
      inpVal = t.val();

  //clean from previous / slashes
  inpVal = inpVal.replace(/\//g, ''); 

  t.val(inpVal);

  // check if 8 digits entered (2day, 2month, 4year)
  if (inpVal.length == 8) { 
    var day_str = inpVal.substring(0, 2),
      month_str = inpVal.substring(2, 4),
      year_str = inpVal.substring(4),
      formDate = day_str + "/" + month_str + "/" + year_str;
    t.val(formDate);
  }
});

答案 2 :(得分:0)

您可以尝试这样的事情:

假设

  1. 年份总是4位数。
  2. 日期格式为DDMMYYYY
  3. 如果日期+月份字符串长度是偶数,即2或4,则将值平均分配。
  4. 如果长度为3,请检查最后2位数字是否= = 12。如果是,请将其视为月份,否则将前2作为日期,最后作为月份。
  5. 代码

    JSFiddle

    &#13;
    &#13;
    function getFormattedDate(date, seperator) {
      var len = date.length;
      var year = date.substring(len - 4);
      var monthAndDate = date.substring(0, len - 4);
      var day, month;
    
      if (!seperator) {
        seperator = "/";
      }
    
      switch (monthAndDate.length) {
        case 2:
          day = monthAndDate.charAt(0);
          month = monthAndDate.charAt(1);
          break;
        case 3:
          if (parseInt(monthAndDate.substring(1)) <= 12) {
            day = monthAndDate.charAt(0);
            month = monthAndDate.substring(1);
          } else {
            day = monthAndDate.substring(0, 2);
            month = monthAndDate.charAt(2);
          }
          break;
        case 4:
          day = monthAndDate.substring(0, 2);
          month = monthAndDate.substring(2);
          break;
      }
      return day + seperator + month + seperator + year;
    }
    
    (function() {
      var date = "23091992";
      console.log(getFormattedDate(date, "/"));
    
      date = "1111992";
      console.log(getFormattedDate(date, "-"));
    
      date = "111992"
      console.log(getFormattedDate(date));
    })()
    &#13;
    &#13;
    &#13;