¿Por qué mi jquery val () no selecciona el valor seleccionado real de mi cuadro de selección?

Cuando escribo $('select[id*=lstAdvGradYear]') cromo me da

<select name="Views\ContentArea$ctl00$lstAdvGradYear" id="Views\ContentArea_ctl00_lstAdvGradYear" class="ddReplace" style="display: none; ">
    <option value="2016">2016</option>
    <option value="2015">2015</option>
    <option value="2014">2014</option>
    <option selected="selected" value="2013">2013</option>
    <option value="2012">2012</option>

</select>

Cuando escribo $('select[id*=lstAdvGradYear]').val() cromo responde con "2016".

Cuando escribo $('select[id*=lstAdvGradYear] option:selected ').val() Chrome también responde con "2016"

Cuando escribo $('select[id*=lstAdvGradYear] option:selected') cromo responde con [<option value="2016">2016</option>]

¿Qué estoy haciendo mal?

He comprobado que no hay otros menús desplegables con un nombre similar


EDIT: Para ser claro, mi problema es que .val() debería regresar 2013 NO 2016

preguntado el 22 de mayo de 12 a las 19:05

Muestra 2013. jsfiddle.net/gaeSC . ¿Qué versión de jquery usas? -

¿Eh? Estoy tratando de averiguar por qué val() no me da 2013 ya que ese es el elemento seleccionado. Sé la diferencia entre val() y no usar val() -

Sé. Lo siento. Eliminé mi comentario porque estaba confundido en cuanto a lo que estabas preguntando. Después de volver a leer me di cuenta de que estaba respondiendo algo muy diferente. -

He actualizado mi respuesta con más información para ti. -

1 Respuestas

Es porque en los dos primeros casos invocaste la función $.val(), pero en el último caso no lo hiciste.

$.val() devuelve el valor de un elemento HTML. $() devuelve un objeto que representa uno o más elementos html, con una serie de métodos que puede invocar, incluido $.val()

Actualizar: Parece que según la documentación (http://api.jquery.com/attribute-contains-selector/), el valor a la derecha de id*= se supone que debe estar entre comillas. ¿Eso hace alguna diferencia?

contestado el 22 de mayo de 12 a las 20:05

Esto no tiene nada que ver con no usar val(). Mi problema es que Val () está devolviendo el valor incorrecto, debería estar devolviendo 2013 y no 2016 ya que 2013 es la opción seleccionada: kalldrexx

Yo también estaba inicialmente confundido. Él dice que todos regresan "2016", pero su HTML muestra "2013" como seleccionado. No se trata de obtener valor o elemento, sino obtener el valor/elemento incorrecto. - reycoyote

Tu actualización es correcta, poniéndola entre comillas se solucionó. Gracias, me estaba tirando de los pelos. kalldrexx

[attr=val] no siempre requiere comillas, si solo se usan letras o ningún carácter especial. Vale la pena señalar que ocurrirá un problema similar si obtiene la información incorrecta. option valor del elemento de val() debido a múltiples selected="selected" elementos. - Sin errores

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.