Jquery - 基于插入值自动填充输入

时间:2017-06-20 08:18:13

标签: jquery html

我有一个简单的表格来输入配偶细节。表格如下;

HTML

<div class="form-group">
    <input type="text" name="name" id="name" placeholder="Name">
</div>

<div class="form-group">
    <input type="text" name="ic_no" id="ic_no" placeholder="IC No.">
</div>

<div class="form-group">
    <input type="date" name="dob" id="dob" placeholder="DOB" >
</div>

ic_no将像870505113223。我能够得到我们YYYY-mm-dd出生的前6位数字;

的jQuery

$("#ic_no").blur(function(){    
    var ic_no = $("#ic_no").val();
    var dob = ic_no.substr(0, 6);
    console.log(dob); //will output 870505
    $("#dob").val(dob); //this will give an error
});

我的问题是,我如何让6位数字自动填充dob输入?

从上面的代码中,我会收到此错误,

The specified value "870505" does not conform to the required format, "yyyy-MM-dd".

2 个答案:

答案 0 :(得分:2)

假设870505与日期1987-05-05匹配。

你可以这样做:

var y = "19" + dob.substring(0, 2);
var m = dob.substring(2, 4);
var d = dob.substring(4, 6);
var f = y + "-" + m + "-" + d;
$("#dob").val(f);

答案 1 :(得分:0)

在您的情况下,您无法仅使用6位数进行转换。你必须得到你的ic_no的所有时间戳然后转换它:

$("#ic_no").blur(function(){   
  var ic_no = $("#ic_no").val();
    d = new Date(ic_no),
    month = d.getMonth()+1, //it is begin with 0 so you must add 1
    day = d.getDate(),
    year = d.getFullYear(); 

    month = CheckZero(month);
    day = CheckZero(day);

    //check if you can add 0 or not
    function CheckZero(number) {
       if (number < 10) {
           number = "0" + number;
       }
       return number;
    }

    var finished_date = year+'-'+month+'-'+day;
     $("#dob").val(finished_date );
});