2012-08-26 11 views
11

Ich habe zwei, die Dropdownlist Monate und Jahre halten ...Holen Sie sich aktuellen Monat und das Datum mit 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()); 
}); 

ich den JQuery-Skript, wie oben geschrieben, so dass, wenn mein Programm läuft der Drop-Down-gewählten Wert der Strom sein muss Monat und Jahr ..

aber wenn ich das Programm. die Warnung gebe 7 und 2012 aus .. aber meiner Ansicht nach ist der aktuelle Monat ausgewählt, aber das aktuelle Jahr ist nicht warum ?? und wie kann ich mein Dropdown-Menü auswählen, um das aktuelle Jahr auszuwählen?

+1

geben Sie etwas mehr Code und eine Demo bei jsfiddle.net –

Antwort

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

Vielen Dank ... arbeitete .. –

2

Monate als eine ganze Zahl von 0 (Januar) bis 11 (Dezember) zurückgegeben werden: http://www.java2s.com/Tutorial/JavaScript/0240__Date/DategetMonth.htm

So der aktuelle Monat (August) siehe 7.en zurückkehren würde mit dem üblichen Um passen Monatsindex (Bedeutung 1 bis 12), verwenden Sie ((new Date()).getMonth() + 1).

Wie in den Kommentaren darauf hingewiesen, habe ich das Problem falsch verstanden. Der Monat ist korrekt, da das nullbasierte Array seit Monaten existiert und der Jquery-Selektor :eq() ebenfalls nullbasiert ist.

Wie jedoch in anderen Antworten darauf hingewiesen wurde, würde das zurückgegebene Jahr nicht mit :eq() übereinstimmen, was mit dem n-ten Element im jquery-Selektor übereinstimmt. Verwendung wie vorgeschlagen option[value=' + (new Date).getFullYear() + ')' wäre besser.

+0

OP hat Probleme mit dem aktuellen Jahr: "Aus meiner Sicht ist der aktuelle Monat ausgewählt, aber das aktuelle Jahr ist nicht warum?" – nemesv

+0

ich meinte nicht, dass es in meiner Dropdown-Liste August zeigt, aber ich möchte 2012 in meiner zweiten Dropdown-Liste zeigen ... da es den minimalen Wert zeigt, zB 2007 .. –

+0

@nemesv: ich möchte das gleiche fragen Frage?? –

1

Der :eq(N) Teil des Wählers in jQuery wählt n-te Element (einschließlich 0-te) in dem angepaßten s et (was zu diesem Zeitpunkt wäre #Years option). Wenn Sie also nicht mehr als 2012 Optionen im Dropdown-Menü Years haben, funktioniert das nicht.

Es ist besser, die Option eines darauf basierenden auszuwählen ist Wert: option[value=2012] oder

just use $("#Years").val(2012), es ist besser lesbar und weniger Code.

+0

aber meine Warnmeldung zeigt 2012 .. –

+0

@ sna2stha: Und? Ihre Warnung zeigt nur das aktuelle Jahr an, nicht die ausgewählte Option. – lqc

Verwandte Themen