2012-06-02 128 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]); 
});