Foros del Web » Programando para Internet » Javascript »

Obtener el contenido de un input

Estas en el tema de Obtener el contenido de un input en el foro de Javascript en Foros del Web. Me explico: Quiero que, en una estructura como esta: Código HTML: <table> <tr> <td id= "celda" > <input type= "text" > <br /> <input type= ...
  #1 (permalink)  
Antiguo 06/07/2006, 03:48
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 19 años
Puntos: 2
Obtener el contenido de un input

Me explico:

Quiero que, en una estructura como esta:

Código HTML:
<table>
	<tr><td id="celda">
              <input type="text"><br />
              <input type="text"><br />
              <input type="text"><br />
              <input type="text"><br />
        </td></tr>
</table> 
Es decir, una tabla, con varios inputs dentro (pueden ser de diferentes clases)

Tengo tambien una funcion en la que obtengo lo que contiene esa celda (los inputs, vamos)

Código PHP:

function contiene(lugar){
        var 
td document.getElementById(lugar);
        
alert(td.innerHTML);

y a la que llamo asi:

Código HTML:
<a href="javascript:contiene('celda')">Que contiene</a> 


De esta manera obtengo (en este caso lo muestro con un alert) los inputs que contiene la celda. Lo que quiero hacer es que tambien capture lo que se escribe despues en esos inputs una vez cargada la pagina, porque, de esta manera, aunque escribas algo, luego no lo obtienes con el innerHTML... y la verdad no se porque.

Como se podria hacer? gracias

PD: Si no se me ha entendido bien lo que quiero hacer decidmelo
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.

Última edición por oskarL; 07/07/2006 a las 04:02
  #2 (permalink)  
Antiguo 06/07/2006, 04:28
Avatar de axiertxo  
Fecha de Ingreso: octubre-2005
Ubicación: España
Mensajes: 387
Antigüedad: 18 años, 6 meses
Puntos: 0
Puedes llamar a tu función cada vez que se escriba algo o s eborre algo en el input para así ir guardando el contenido. ejemplo

<input name="" type="text" onKeyPress="contiene('celda')">


saludos
__________________
El mundo exige resultados. No le cuentes a otros tus dolores del parto. Muéstrales al niño.
  #3 (permalink)  
Antiguo 06/07/2006, 06:41
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 19 años
Puntos: 2
Aun asi es el mismo problema!

Veras, haciendo esto consigo tener y mostrar el codigo fuente de los inputs, y todo lo que contenga esa celda, pero lo que escribo en los input no lo obtengo con el innerHTML que utilizo.

Por cierto, estoy buscando una solucion sencilla, en la que no tenga que modificar demasiado el planteamiento inicial

Muchas Gracias!
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
  #4 (permalink)  
Antiguo 06/07/2006, 08:20
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola oskarL

Prueba esto:
Código PHP:
function contiene(lugar){
        
cel document.getElementById(lugar);
     for (
i=0ele=cel.getElementsByTagName('input')[i]; i++)
      
alert(ele.value);

Saludos,
  #5 (permalink)  
Antiguo 07/07/2006, 01:42
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 19 años
Puntos: 2
Perfecto! Poco a poco parece que voy a ir consiguiendo lo que necesito realemente, jeje.

Gracias por esa buena idea JavierB, asi obtengo los valores de los inputs que estan en la celda. Ahora lo que me gustaria es lo siguiente:

Cuando hago lo del td.innerHTML, lo que obtendria, segun el primer ejemplo, seria esto:

Código PHP:
<input type="text"><br /><input type="text"><br /><input type="text"><br /><input type="text"><br /> 
y ese texto lo asigno a una variable, asi tengo guardado lo que hay en el interior de la celda. Pues bien, por otro lado, y gracias al codigo de JavierB, ahora tengo el valor de esos inputs que hay en ese interior.

Lo que busco es asignar a esos inputs guardados su valor correspondiente, es decir, tener guardado ese texto del codigo de los input con el valor que se ha introducido

Tengo los datos por separado, ahora no se como juntarlo :S

Muchas gracias de nuevo!
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.

Última edición por oskarL; 07/07/2006 a las 04:03
  #6 (permalink)  
Antiguo 07/07/2006, 04:02
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 19 años
Puntos: 2
Bueno, he estado intentando cosas, y creo que lo he conseguido!

Si a alguien le interesa, debajo pongo el codigo. Tambien me gustaria que lo analizarais, y que lo simplificarais, si es posible, ya que uso tres bucles diferentes, y seguro que no es lo mas eficiente.

Código PHP:

    
function contiene(lugar){
        
                
//cogo la celda    
        
var td document.getElementById(lugar);
    
                
//array 'inputs' contendra el texto del codigo de cada input 
        
var inputs=new Array();

                
//array 'inputs_replaced' contendra el texto del codigo de cada input reemplazado con su value correspondiente
        
var inputs_replaced=new Array();

                
//contadores para los arrays
        
var n_inputs=0;
        var 
n_inputs_replaced=0;

                
//en code montare el string final
        
var code="";



                
//separo las etiquetas del interior de la celda en un array (en cada posicion, el codigo de una etiqueta, pero sin ">")
        
var codearray=td.innerHTML.split(">");
        
                
//lo recorro, y si se trata de una etiqueta input, lo añado al array de inputs (concatenadole ">", porque no lo lleva)
        
for (i=0s=codearray[i]; i++){    
            if(
s.substring(1,s.indexOf(" "))=="input"){
                
inputs[n_inputs]=s+">";
                
n_inputs++;
            }
        }
        
                
//recorro los inputs de la celda, y remplazo en el array de inputs el string "input" por "input value='x'", donde "x" es el valor del input de la celda 
        
for (i=0ele=td.getElementsByTagName('input')[i]; i++){
            
inputs_replaced[i]=inputs[i].replace("input ","input value='"+ele.value+"' ");
        }

                
//Muestra tal y como esta el codigo de la celda en la pagina
        
alert(td.innerHTML);

                
//recorro otra vez el array de todas las etiquetas de la celda, para montar el string final. De nuevo, si el elemento es un input, en vez de concatenar lo que hay, concateno el input reemplazado
        
for (i=0s=codearray[i]; i++){    
            if(
s.substring(1,s.indexOf(" "))=="input"){
                
code+=inputs_replaced[n_inputs_replaced];
                
n_inputs_replaced++;
            }else{
                
s2=s+">";
                
code+=s2;
            }
        }

                
//Muestro el resultado final
        
alert(code);
    } 
Bueno, lo dicho, que gracias por las aportaciones, y si se puede mejorar este codigo para que haga lo mismo, pues me lo decis, que bienvenido sera, jeje
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
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 01:18.