2009-06-15 15 views
12

(answers aggregated into another question)selector de jQuery no puede leer desde campo oculto

El siguiente código de jQuery 1.3.2 funciona:

<input type="select" value="236434" id="ixd" name='ixd' /> 

<script> 
console.log($('#ixd')); 
console.log($("input[name='ixd']")); 
</script> 

consola muestra:

[Entrada # 236434 IxD]

[entrada # IXD 236434]

Sin embargo, establecer la entrada en "oculto" impide que los selectores funcionen. ¿Alguna pista?

<input type="hidden" value="236434" id="ixd" name='ixd' /> 

<script> 
console.log($('#ixd')); 
console.log($("input[name='ixd']")); 
</script> 

consola muestra:

[]

[]

Respuesta

27

No sé por qué que no cumpliría. Hago lo mismo en el trabajo de forma regular, y funciona independientemente de si el campo de formulario está oculto o no.

Tal vez intente esto:

<input type="hidden" value="236434" id="ixd" name='ixd' /> 

<script> 
    console.log($("#xid").val()) 
</script> 

que les permite conocer el valor del campo oculto. Para obtener el valor de un campo de formulario, se debe utilizar el método .val().

+2

+1: Se debe utilizar .val() para recuperar el valor del campo. –

+1

Intenté señalar que los selectores no funcionaban en lugar de utilizar la salida :) – Andy

+0

¡Además, este código tampoco funciona! – Andy

2

Esto puede ser un problema mayor con la consola. Ejecuté una prueba y parece que todavía capturo la instancia del elemento. No puedo decir exactamente qué estás tratando de hacer aquí.

Si usted está tratando de validar wether el objeto fue encontrado comprobar la propiedad de longitud

console.log($('#xid').length); 

Si usted está tratando de obtener el valor del campo a continuación, utilizar el método val

console.log($('#xid').val()); 

Finalmente, es posible que en su solución el DOM aún no se haya cargado completamente. Asegúrese de que está ajustando su lógica dentro de una llamada a document.ready.

$(document).ready(function() { 
    console.log($('#xid').val()); 
}); 
+0

Muchas gracias, esta es la solución, pero ¿por qué esto no funciona en este caso cuando las etiquetas

1

Si está haciendo esto en ASP.Net, verifique el ID de su control en tiempo de ejecución a través de la opción Ver origen en su navegador. Puede encontrar que su ID de control no es lo que espera que sea, por ejemplo, si su control se declara en una página de contenido. En este caso, se le asignaría una ID impulsada por su página maestra. En lugar de codificar el ID en su jQuery, puede consultar su propiedad ClientID utilizando la sintaxis en línea de ASP.Net, que también lo protegerá de cualquier cambio en la jerarquía de control de la página maestra o del contenido.

Entonces ...

$('#<%= myHiddenControl.ClientID %>').val(); 

... sería una mejor opción que ...

$('#ctl00_ContentPlaceHolder1_ctl00_ContentPlaceHolder1_myHiddenControl').val(); 

... a pesar de que lo harían tanto trabajo.

0

Si ninguno de los trabajos sobre intente

$('#xid').attr('value');