2012-08-26 64 views
11

tengo dos DropDownList que sostienen meses y años ...Obtener mes y la fecha actual utilizando 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()); 
}); 

escribí el guión jQuery como es arriba es que cuando mi programa se ejecuta el valor desplegable seleccionada debe ser la corriente mes y año ...

pero cuando ejecuto el programa ... la alerta da 7 y 2012 ... pero en mi opinión se selecciona el mes actual pero el año actual no es el motivo ?? y ¿cómo puedo hacer que mi menú desplegable seleccione el año actual?

+1

dar un poco más de código y publicar una demostración en jsfiddle.net –

Respuesta

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

Muchas gracias ... funcionó .. –

2

Meses se devuelven como un número entero de 0 (enero) a 11 (diciembre): véase http://www.java2s.com/Tutorial/JavaScript/0240__Date/DategetMonth.htm

Así que el mes en curso (agosto) volvería 7. Para poder coincidir con el habitual índice mensual (es decir, del 1 al 12), use ((new Date()).getMonth() + 1).

Como señalé en los comentarios, entendí mal el problema. El mes es correcto debido a la matriz basada en cero durante meses y el selector de jquery :eq() también está basado en cero.

Sin embargo, como se señaló en otras respuestas, el año devuelto no coincidiría con :eq() que coincide con el enésimo elemento en el selector de jquery. Usar como sugerido option[value=' + (new Date).getFullYear() + ')' sería mejor.

+0

OP tiene problemas con el año actual: "en mi opinión, se selecciona el mes actual, pero el año actual no es por qué ??" – nemesv

+0

no quise decir que en mi lista desplegable muestra agosto, pero quiero mostrar 2012 en mi segunda lista desplegable ... ya que muestra el valor mínimo, es decir, 2007 .. –

+0

@nemesv: quiero preguntar lo mismo ¿¿pregunta?? –

1

La parte :eq(N) del selector en la jQuery selecciona elemento enésimo (incluyendo 0 ª) en el emparejado s et (que en ese momento sería #Years option). Entonces, a menos que tenga más opciones que 2012 en el menú desplegable Years, esto no funcionará.

Es mejor seleccionar la opción basada en su valor: option[value=2012] o

just use $("#Years").val(2012), es más fácil de leer y menos código.

+0

pero mi mensaje de alerta muestra 2012 .. –

+0

@ sna2stha: ¿Y? Su alerta solo muestra el año actual, no la opción que se seleccionó. – lqc

Cuestiones relacionadas