PDA

View Full Version : [Javascript] recupero dati da input text


diomede
27-12-2006, 16:36
Ciao a tutti.
Ho creato una pagina XHTML nella quale voglio inserire dinamicamente le righe di una tabella in base all'input dell'utente. Fatto ciò vorrei poter visualizzare le scritte inserite negli input text delle righe della tabella in un'altra tabella che verrà sovrascritta nella pagina che abbia nelle celle solo i dati senza gli input text. Ho provato con questo codice ma mi scrive solo il primo input text. Dovrei recuperare ogni input text ma non ci riesco, mi prende solo il primo. Al click dell'invia mi dice necessario oggetto, in corrispondenza del primo array nel quale memorizzo gli input text nome.

Qualcuno potrebbe aiutarmi?

Grazie

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
<!--

var elementi= "";
var volte= 0;
var campi= 0;
arr_nome = new Array();
arr_cognome = new Array();
arr_indirizzo = new Array();

function visual(campi)
{

for(j=1;j<=campi;j++){
arr_nome += document.getElementById('nome' + j).value;
arr_cognome += document.getElementById('cognome' + j ).value;
arr_indirizzo += document.getElementById('indirizzo' + j).value;
document.write("<br />" + arr_nome + " " + arr_cognome + " " + arr_indirizzo);

}

}



function aggiungi(campi) {
volte++;
if (volte>1)
window.alert("non è possibile aggiungere i campi due volte; eventualmente aggiornare la pagina");
else {
elementi += "<table border=\"4\" cellspacing=\"4\" cellpadding=\"4\"><form name=\"form2\" action=\"''\">";
for(var i=1; i<=campi; i++) {
elementi += "<tr><td>nome <input type=\"text\" name=\"nome\"" + i + " size=\"20\"></td><td> cognome <input type=\"text\" name=\"cognome\"" + i + " size=\"20\"></td><td> indirizzo <input type=\"text\" name=\"indirizzo\"" + i + " size=\"40\"></td></tr>";
}
elementi += "<tr><td colspan=\"3\" align=\"center\"><input type=\"button\" name=\"Invia\" value=\"INVIA\" onclick=\"visual(document.form1.num.value)\"> <input type=\"reset\" name=\"Cancella\" value=\"CANCELLA\"></td></tr></form></table>";
document.getElementById('agg').innerHTML += elementi;
}
}



// -->
</script>
</head>
<body>
<p>Quante righe vuoi inserire?
<form name="form1">
<input type=text name="num" size=3>
<input type=button name="bottone" value="OK" OnClick="aggiungi(document.form1.num.value)">
</form></p>
<p id="agg"></p>
</body>
</html>

andbin
27-12-2006, 17:01
Ciao a tutti.
Ho creato una pagina XHTML nella quale voglio inserire dinamicamente le righe di una tabella in base all'input dell'utente. Fatto ciò vorrei poter visualizzare le scritte inserite negli input text delle righe della tabella in un'altra tabella che verrà sovrascritta nella pagina che abbia nelle celle solo i dati senza gli input text. Ho provato con questo codice ma mi scrive solo il primo input text. Dovrei recuperare ogni input text ma non ci riesco, mi prende solo il primo. Al click dell'invia mi dice necessario oggetto, in corrispondenza del primo array nel quale memorizzo gli input text nome.

Qualcuno potrebbe aiutarmi?Occhio ad alcune cose:

a) L'inserimento della tabella nel tag <p> funziona con IE ma non con Firefox. Il problema è dovuto al fatto che in XHTML non è valido mettere un <form> che discende direttamente da un <table>.

b) la document.write non la puoi più usare una volta che la pagina è stata caricata. Per visualizzare i valori devi quindi usare nuovamente innerHTML.

c) All'inizio crei degli array vuoti, es. arr_nome = new Array();. Poi in visual() fai:
arr_nome += document.getElementById(.....

Perché?? Guarda che così l'array non serve a nulla.

diomede
27-12-2006, 17:05
riguardo al punto c---> creo degli array per trasferirvi il valore di ogni input text. Non mi è vnuto altro in mente.....

andbin
27-12-2006, 17:13
riguardo al punto c---> creo degli array per trasferirvi il valore di ogni input text. Non mi è vnuto altro in mente.....Sì ma se fai:

var mia_var = new Array();

mia_var += una_stringa;

la variabile mia_var diventa .... una stringa!!

Se non ci credi, prova:
var arr = new Array ();
alert (typeof (arr));
arr += "ciao";
alert (typeof (arr));La prima alert stampa 'object' ma la seconda stampa 'string'. ;)

diomede
27-12-2006, 17:21
:confused: :eek: ok grazie

diomede
27-12-2006, 17:37
mi rimane solo da capire come recuperare i dati con document.getElementById('...').value, per ogni input text..........
:cry:

andbin
27-12-2006, 20:52
mi rimane solo da capire come recuperare i dati con document.getElementById('...').value, per ogni input text..........
:cry:Questo tecnicamente l'avresti già fatto con:

document.getElementById('nome' + j).value

Che è corretto. Ma probabilmente non sai una cosa importante: getElementById va a cercare un 'id' non un 'name'.
Quando generi la tabella tu hai scritto:

elementi += "<tr><td>nome <input type=\"text\" name=\"nome\"" + i + " size=\"20\"></td>....

A parte il fatto che è sbagliato, perché otterresti name="nome"NN, comunque devi mettere un 'id', quindi:

elementi += "<tr><td>nome <input type=\"text\" id=\"nome" + i + "\" size=\"20\"></td>....

diomede
29-12-2006, 09:25
Grazie mille per le dritte.
:) ;) :doh: