Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Atributo value no cambia.

Estas en el tema de Atributo value no cambia. en el foro de Jquery en Foros del Web. Hola, buenos días. Tengo un problemilla con un input y su atributo value. El html es este: Código HTML: <input class= "modificable" type= "text" name= ...
  #1 (permalink)  
Antiguo 12/05/2014, 03:58
 
Fecha de Ingreso: octubre-2013
Ubicación: Pego Alicante
Mensajes: 25
Antigüedad: 10 años, 6 meses
Puntos: 0
Atributo value no cambia.

Hola, buenos días.
Tengo un problemilla con un input y su atributo value. El html es este:
Código HTML:
 <input class="modificable" type="text" name="numero_usuario" id="numero_usuario" value="{numero_usuario}" onkeyup="validar_usuario(this)"> 
Los valores que están entre llaves {} se modifican dinámicamente en el servidor cuando crea el html (el valor del atributo value es justamente uno de esos valores modificados en el servidor). La función validar_usuario es la siguiente:

Código:
function validar_usuario(cuadro)
{
    jQuery.get("http://"+servidor+"/mengual/core/controller_usuario.php?numero_usuario=" + cuadro.value,
    function(data,status)
    {
       	cuadro.parentNode.parentNode.childNodes[7].firstChild.value=data;
    });
}
Lo que hace es (aunque esto creo que es lo de menos, os podéis saltar este párrafo) enviar el número identificativo de usuario y se contraste contra una base de datos la cual tiene que devolver el nombre del usuario e introducirlo en otro campo input. Además también llama a la función insertar, que inserta ese usuario en un array si no existía anteriormente.

Cuando introduzco un número en el primer input (cuyo código está arriba), todo funciona bien, o sea, hace la llamada a la función validar_usuario, y ésta rellena el segundo input con el nombre de usuario correcto. El verdadero problema es que si inspecciono el elemento del primer input el ATRIBUTO VALUE NO CAMBIA.

¿Por qué cuando hago cuadro.value (en la llamada jQuery.get) está devolviéndome el valor que yo introduzco, pero después no cambia en los atributos del html no cambia esa propiedad value?

MUCHAS GRACIAS DE ANTEMANO.

Última edición por eloyucu; 12/05/2014 a las 04:55
  #2 (permalink)  
Antiguo 12/05/2014, 10:57
 
Fecha de Ingreso: agosto-2013
Mensajes: 150
Antigüedad: 10 años, 8 meses
Puntos: 29
Respuesta: Atributo value no cambia.

Ya que estás usando Jquery, usa jquery.
Código Javascript:
Ver original
  1. function(data, status) {
  2.    $('#id campo input').val(data);
  3.    ...
  #3 (permalink)  
Antiguo 12/05/2014, 11:17
 
Fecha de Ingreso: octubre-2013
Ubicación: Pego Alicante
Mensajes: 25
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Atributo value no cambia.

El problema es que, por necesidad foránea (es decir, me lo han dado así... y tengo que adpatarme, además que tiene una explicación) el id no es único, así que la selección por id no va a poder ser. Lo que estoy haciendo al final es esto:

Código Javascript:
Ver original
  1. function validar_usuario(cuadro_aux)
  2. {
  3.     var cuadro = $(cuadro_aux);
  4.     jQuery.get("http://"+servidor+"/mengual/core/controller_usuario.php?numero_usuario=" + cuadro_aux.value,
  5.     function(data,status)
  6.     {
  7.         cuadro.attr("value", cuadro_aux.value);
  8.         cuadro.parent().next().next().children().attr("value", data);
  9.         cuadro.css({ color: "#FFFFFF", background: "#FF0000" });
  10.        
  11.     });
  12. }

Lo único que me gustaría saber es si hay manera de enviar directamente el elemento desde el input como si fuera un objeto jquery directamente, o sea, algo así (mirar onkeyup):

Código HTML:
Ver original
  1. <input class="modificable" type="text" name="numero_usuario" id="numero_usuario" value="{numero_usuario}" onkeyup="validar_usuario($(this))">

MUCHAS GRACIAS.

Etiquetas: funcion, html, input, javascript, php, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:08.