ejemplo - jquery id value
¿Por qué la función jQuery val() no actualiza el atributo ''valor''? (1)
Utiliza el elemento nativo subyacente.value element.value = ''someValue''
que, por supuesto, establece el valor de la propiedad del elemento
element.property_to_set = ''new_value'';
por lo que no cambia el atributo, eso sería
element.setAttribute(''value'', ''someValue'')
que es lo que attr()
hace internamente, mientras que prop()
cambia la propiedad, al igual que val()
.
La razón por la que cambia la propiedad, es que la propiedad es lo que se utiliza en un envío de formulario, y normalmente es lo que se usa para recuperar el valor en javascript también, por lo que tiene sentido apegarse a la propiedad y no al atributo, como el atributo normalmente solo se usa para establecer el valor inicial de la propiedad, y cambiar el atributo más tarde con javascript no actualiza la propiedad, que sería el problema opuesto al que está teniendo, y afectaría a todos los envíos de formularios y ser un problema importante.
Me encontré con este tema después de completar el sitio web ya que tuve que implementar el historial en una página basada en Ajax (que requiere actualizar ciertos lugares con html (que incluye formularios con entradas de texto simples, ahí es donde el problema) no se obtienen sus valores asignados, porque tienen sus valores establecidos por val () y no por attr () - mentiras)). ¿Estoy condenado a tener que reemplazar todo javascript de
$(''#xxx'').val(''someValue'');
a
$(''#xxx'').attr(''value'', ''someValue'');
o hay alguna esperanza de eludir esto?
Un ejemplo bastante trivial aquí . Como puede ver en el diálogo, el valor del atributo no está establecido en el código html.