2012-06-02 82 views
0

我有一个网页上加载看起来像这样的输入域:转换日期格式在JavaScript

<input type="input" id="start_date" name="start_date" value="May 12, 2012"/> 

我想下面的情况发生:

  • 当上该领域的用户点击进入日期,格式更改为YYYY-MM-DD。 (2012-05-12)
  • 用户离开字段后,格式会变回MMM DD,YYYY(2012年5月12日)。
  • 当数据通过发布提交时,格式为YYYY-MM-DD(2012-05-12)。

我该如何用jQuery来实现这个?

+0

日期操纵是纯JavaScript,有jQuery中(其中,我知道)什么来简化这个。虽然[你有什么尝试](http://whathaveyoutried.com/),你卡在哪里? –

+1

我建议你得到[date.js](http://www.datejs.com/)并使用内置到该库中的所有转换,而不是从头开始编写它。 – jfriend00

+0

为什么所有的转换?我的日期字段在服务器上被格式化为“2012年5月12日”,当他们被发送到表单时,但服务器将接受以“MMM DD,YYYY”(3个字母缩写的月份)输入的日期或'M * DD,YYYY'(拼写出来的月份)或'YYYY-MM-DD'或'MM/DD/YYYY'或'MM/DD/YY'(通过y2k风格规则转换2位数年份)等。我只是试图用一堆不同的方式解析提交的日期。 –

回答

0

如果你不希望依赖于特定的框架/插件,你可以这样做:

$("#start_date").click(function() { 
    var d = new Date($(this).val()); 
    $(this).val(d.getFullYear() + "-" 
     + String(d.getMonth() + 101).slice(-2) + "-" 
     + String(d.getDate() + 100).slice(-2)); 
}).blur(function() { 
    // Eventual format checking goes here 

    var m = $(this).val().split("-"), 
     d = new Date(m[0], m[1] - 1, m[2]), 
     s = d.toString().split(" "); 
    $(this).val(s[1] + " " + s[2] + ", " + s[3]); 
});