2012-08-26 39 views
11

Tôi có hai DropDownList giữ tháng và năm ...Get tháng hiện tại và ngày sử dụng jquery

$(document).ready(function() {    
    $('#Months option:eq(' + (new Date).getMonth() + ')').prop('selected', true); 
     alert((new Date).getMonth());   
    $('#Years option:eq(' + (new Date).getFullYear() + ')').prop('selected', true); 
     alert((new Date).getFullYear()); 
}); 

Tôi đã viết kịch bản JQuery như trên để khi chương trình của tôi chạy giá trị thả xuống được lựa chọn phải là hiện tại tháng và năm ..

nhưng khi tôi thực hiện chương trình .. cảnh báo cho 7 và 2012 .. nhưng theo quan điểm của tôi tháng hiện tại được chọn nhưng năm hiện tại không phải là lý do ?? và làm thế nào tôi có thể làm cho thả xuống của tôi để chọn năm hiện tại ??

+1

cung cấp thêm một số mã và đăng bản trình diễn tại jsfiddle.net –

Trả lời

17

jQuery

var d = new Date(), 

    n = d.getMonth(), 

    y = d.getFullYear(); 

$('#months option:eq('+n+')').prop('selected', true); 

$('#years option[value="'+y+'"]').prop('selected', true); 

HTML

​<select id="months"> 
    <option value="1">January</option> 
    <option value="2">February</option> 
    <option value="3">March</option> 
    <option value="4">April</option> 
    <option value="5">May</option> 
    <option value="6">June</option> 
    <option value="7">July</option> 
    <option value="8">August</option> 
    <option value="9">September</option> 
    <option value="10">October</option> 
    <option value="11">November</option> 
    <option value="12">December</option> 
</select> 
<select id="years"> 
    <option value="2011">2011</option> 
    <option value="2012">2012</option> 
    <option value="2013">2013</option> 
</select> 

DEMO

+0

Cảm ơn bạn rất nhiều ... đã làm việc .. –

2

tháng được trả về là một số nguyên từ 0 (tháng) đến 11 (tháng): xem http://www.java2s.com/Tutorial/JavaScript/0240__Date/DategetMonth.htm

Vì vậy, tháng hiện tại (tháng Tám) sẽ quay trở lại 7. Để có thể phù hợp với bình thường chỉ mục tháng (nghĩa là 1 đến 12), sử dụng ((new Date()).getMonth() + 1).

Như đã nêu trong các nhận xét, tôi đã hiểu sai vấn đề. Tháng chính xác vì mảng không dựa trên tháng trong tháng và bộ chọn jquery :eq() cũng không dựa trên 0.

Tuy nhiên như được chỉ ra trong các câu trả lời khác, năm được trả về sẽ không khớp với :eq() khớp với phần tử thứ n trong bộ chọn jquery. Sử dụng như được đề xuất option[value=' + (new Date).getFullYear() + ')' sẽ tốt hơn.

+0

OP gặp sự cố với năm hiện tại: "theo quan điểm của tôi, tháng hiện tại được chọn nhưng năm hiện tại không phải là lý do ??" – nemesv

+0

tôi không có nghĩa là trong danh sách thả xuống của tôi nó cho thấy tháng tám nhưng tôi muốn hiển thị năm 2012 trong danh sách thả xuống thứ hai của tôi ... vì nó đang hiển thị giá trị tối thiểu tức là năm 2007 .. –

+0

@ nemesv: tôi muốn hỏi tương tự câu hỏi ?? –

1

Các :eq(N) một phần của bộ chọn trong jQuery chọn yếu tố thứ N (bao gồm 0) trong lần xuất hiện s et (tại thời điểm đó sẽ là #Years option). Vì vậy, trừ khi bạn có nhiều lựa chọn hơn vào năm 2012 trong danh sách thả xuống Years, điều này sẽ không hoạt động.

Nó tốt hơn để chọn tùy chọn dựa trên giá trị của nó: option[value=2012] hoặc

just use $("#Years").val(2012), nó dễ đọc hơn và ít mã.

+0

nhưng thông điệp cảnh báo của tôi hiển thị 2012 .. –

+0

@ sna2stha: Và? Cảnh báo của bạn chỉ hiển thị năm hiện tại, không phải tùy chọn nào được chọn. – lqc

Các vấn đề liên quan