He estado tratando de establecer el valor de un campo oculto en un formulario usando jQuery, pero sin éxito.
Aquí hay un código de muestra que explica el problema. Si mantengo el tipo de entrada en "texto", funciona sin ningún problema. Pero, cambiar el tipo de entrada a "oculto", ¡no funciona!
<html>
<head>
<script type="text/javascript" src="jquery.js">
</script>
<script type="text/javascript">
$(document).ready(function() {
$("button").click(function() {
$("input:text#texens").val("tinkumaster");
});
});
</script>
</head>
<body>
<p>
Name:
<input type="hidden" id="texens" name="user" value="texens" />
</p>
<button>
Change value for the text field
</button>
</body>
</html>
También probé la siguiente solución, configurando el tipo de entrada en "texto" y luego usando un estilo "display: none" para el cuadro de entrada. ¡Pero esto también falla! Parece que jQuery tiene algunos problemas para configurar campos de entrada ocultos o invisibles.
¿Algunas ideas? ¿Hay alguna solución para esto que realmente funcione?
fuente
val()
funciona bien en la entrada oculta, cambiando el valor de "no cambiado" a "cambiado". Revisé el ejemplo para incluir el código que pegó anteriormente, con una alerta para confirmar el cambio de valor: jsbin.com/elovo/2/editSi tiene problemas para configurar el valor de un campo oculto porque le está pasando una identificación, esta es la solución:
En lugar de
$("#hidden_field_id").val(id)
simplemente hacerlo$("input[id=hidden_field_id]").val(id)
. No estoy seguro de cuál es la diferencia, pero funciona.fuente
Finalmente, he encontrado una solución y es simple:
Funciona de maravilla. No tengo idea de por qué jQuery no recurre a esto.
fuente
type="radio"
. Soy demasiado flojo para informar un problema, especialmente dado que resolví este problema hace 4 años. También estoy desgarrado si se debe solucionar en jQuery, ¿posiblemente se implementa de esa manera para proteger a los niños jQuery de sí mismos? Quién sabe ...Tuve el mismo problema Curiosamente, Google Chrome y posiblemente otros (no estoy seguro) no les gustó
(ningún cambio)
(ningún cambio)
pero esto funciona !!!!
CAMBIOS !!
CAMBIOS !!
debe ser una "cosa de cuerdas"
fuente
.val(' 0')
, que se analiza correctamenteparseInt
en Javascript, así comoint()
en Python, mi back-end.funcionó para mí, cuando ninguno
ni
hizo.
fuente
.val no funcionó para mí, porque estoy agarrando el atributo de valor del lado del servidor y el valor no siempre se actualizó. así que usé:
Espero que ayude a alguien.
fuente
En realidad, este es un problema continuo. Si bien Andy tiene razón sobre la fuente descargada, .val (...) y .attr ('valor', ...) no parecen modificar realmente el html. Creo que este es un problema de JavaScript y no un problema de jquery. Si hubieras usado Firebug, incluso hubieras tenido la misma pregunta. Si bien parece que si envía el formulario con los valores modificados, el html no cambiará. Me encontré con este problema al intentar crear una vista previa de impresión del formulario modificado (haciendo [formulario] .html ()), copia todo bien, incluidos todos los cambios exceptocambios de valores Por lo tanto, mi vista previa de impresión modal es algo inútil ... mi solución puede ser 'construir' un formulario oculto que contenga los valores que han agregado, o generar la vista previa de forma independiente y hacer cada modificación que el usuario haga también para modificar la vista previa. Ambas no son óptimas, pero a menos que alguien descubra por qué el comportamiento de establecimiento de valores no cambia el html (en el DOM, supongo) que tendrá que hacerlo.
fuente
Estaba teniendo el mismo problema y descubrí lo que estaba mal. Tenía el HTML definido como
La lectura de los valores del formulario en el servidor siempre resultó en un correo electrónico vacío. Después de rascarme la cabeza (y numerosas búsquedas), me di cuenta de que el error no estaba definiendo el formulario / entrada correctamente. Al modificar la entrada (como se muestra a continuación), funcionó de maravilla
Agregar a este hilo en caso de que otros tengan el mismo problema.
fuente
En mi caso, estaba usando un non-string (entero) como parámetro de val () que no funciona, el truco es tan simple como
fuente
Usar
val()
no funcionó para mí. Tuve que usar en.attr()
todas partes. También tuve diferentes tipos de entradas y tuve que ser bastante explícito en el caso de casillas de verificación y menús seleccionados.Actualizar campo de texto
Actualizar imagen junto a la entrada del archivo
Actualización booleana
Actualización select (con número o cadena)
fuente
Otro problema aquí desperdició parte de mi tiempo, así que pensé en pasarle la propina. Tenía un campo oculto que le di una identificación que tenía. y
[]
corchetes en el nombre (debido al uso con struts2) y el selector$("#model.thefield[0]")
no encontraría mi campo oculto. Cambiar el nombre de la identificación para que no use los puntos y los corchetes hizo que el selector comenzara a funcionar. Así que al final terminé con una identificación demodel_the_field_0
y el selector funcionó bien.fuente
$("#model.thefield[0]")
se está interpretando como: un elemento conid
igual amodel
, un cssclass
dethefield
y algunosattribute
llamados0
... Si desea utilizar esos caracteres en suid
uso, utilice el enfoque sugerido por Chuck Callebs en su respuesta . En HTML5,id
puede ser cualquier cadena que no esté vacía y no contenga ningún espacio ( referencia ).Usando ID:
Usando clase:
fuente
Si está buscando haml, esta es la respuesta para el campo oculto para establecer el valor en un campo oculto como
En su jquery simplemente convierta el valor a cadena y luego añádalo usando la propiedad attr en jquery. Espero que esto también funcione en otros idiomas también.
fuente
fuente
Simplemente use la sintaxis debajo de get y set
OBTENER
aquí una variable contendrá el valor de hiddenfield (selectindex)
Lado del servidor
CONJUNTO
fuente
Cualquier otra persona que esté luchando con esto, hay una forma "en línea" muy simple de hacer esto con jQuery:
Esto establece el valor del campo oculto a medida que el texto se escribe en la entrada visible utilizando el evento onChange. Útil (como en mi caso) donde desea pasar un valor de campo a un formulario de "Búsqueda avanzada" y no obligar al usuario a volver a escribir su consulta de búsqueda.
fuente