2011-07-18 79 views
0

我有一個jQuery的日期選擇器,日期格式爲dd/mm/yyyy。當某人輸入日期,選擇日期並加載時,我需要顯示月份名稱。我努力爭取這個月。 myDate是附加到datepicker的文本框。我有這樣的:從jquery datepicker提取月份

var date = new Date($("#myDate").val()); 
alert(date.getDate()); 
alert(date.getMonth()); 
alert(date.getDay()); 
alert(date.getYear()); 

當我的18/07/2011日期運行它,我得到5月,4天,7日和112年,這是所有很奇怪。我究竟做錯了什麼?我需要做的就是動態地將月份標籤更改爲使用日期選擇器選擇/鍵入的月份,即7月份...

回答

3

要從datepicker獲取日期,您應該使用$("#myDate").datepicker("getDate")。儘管您目前正在做的事情會構建一個JavaScript Date對象,它可能以錯誤的方式解釋.val()。

+0

感謝,怎麼會我得到月份的名字?我可以直接從日期選擇器中得到,還是我需要得到7月份的6,然後以某種方式獲得月份名稱? –

+0

歡迎。您可以使用一組預定義的名稱(請注意JavaScript的月份爲零),或者將altField和altFieldFormat與日期選擇器一起使用,並設置具有月份名稱的備選字段並稍後提取它([Datepicker Docs](http: //docs.jquery.com/UI/Datepicker)) – MeLight

+0

有沒有一種從月份直接獲取文本下拉選擇值的方法?它在那裏,我似乎無法得到它 –

1

使用

$('#myDate').datepicker('getDate') 

將讓你在一個更安全的方式JavaScript的日期對象。此外,getMonth()將返回一個零索引的月份,所以7月將返回爲「6」。要返回全年你應該使用:.getFullYear()

機會是JavaScript「新日期()」不是解析它在正確的日期格式。如果您已經正確設置了日期選擇器的日期格式,那麼當您使用它的'getDate'方法時,該部件將爲您完成這項工作。

因此您的代碼將變爲:

var date = $("#myDate").datepicker('getDate'); 
alert(date.getDate());   // Day of the month 
alert(date.getMonth());  // Month with a zero index 
alert(date.getDay());   // Day of the week 
alert(date.getFullYear());  // The "full" year, e.g. 2011 

//更新與選擇列表

選擇從下拉正確的價值將很大程度上取決於你如何建立你的價值的解決方案。即如果值:

<select id="MySelect"> 
    <option value="1">Jan</option> 
</select> 

然後,你可以簡單地做:

$('#MySelect').val((date.getMonth() + 1)); 

這將選擇指定的月份。但是,如果你的價值月份名稱的一些變化,即:

<select id="MySelect"> 
    <option value="Jan">Jan</option> 
</select> 

那麼你就需要一個函數從月號映射到它的名字,像:

var months = ['Jan', 'Feb', 'Mar', ...etc } 

function getMonthShortName(month) { 
    return months[month]; 
} 

$('#MySelect').val(getMonthShortName(date.getMonth()));