PDA

View Full Version : [Javascript] Figli di un elemento


Abdujaparov
09-09-2009, 11:19
Ciao a tutti,
ho un piccolo problema con javascript. Ho una pagina con più form quando presso un tasto viene richiamata una funzione javascript che scorre i form e man mano passa il form ad un'altra funzione che ne valida alcuni campi.
Il mio problema è come far prendere, alla seconda funzione i nodi figli del form, in particolare gli input text.
Ho scritto le seguenti due funzioni:

function valida(){

var forms = document.getElementsByTagName("form");


for(i=0; i<forms.length; i++){

checkValida(forms[i].childNodes);
}

}

function checkValida(form){

var patternNumerico = /^[0-9]+(\.[0-9]*)?$/;

var navInput = form.getElementsByTagName("input");

for(i=0; i<navInput.length; i++){
if(navInput[i].type=="text"){
if(navInput[i].value.length>0 && !patternNumerico.test(navInput[i].value))
alert('Campo NAV non valido');
return false;
}
}

return true;
}


Il problema lo incontro alla riga:

var navInput = form.getElementsByTagName("input");


Il form contiene una tabella, che ha al suo interno varie righe e varie colonne.
In una colonna sono contenuti degli elementi input di tipo text, che sono quelli che mi interessano.
Come faccio a prenderli?
Grazie a tutti, ciao ciao.

Y3PP4
09-09-2009, 12:02
Ciao a tutti,
ho un piccolo problema con javascript. Ho una pagina con più form quando presso un tasto viene richiamata una funzione javascript che scorre i form e man mano passa il form ad un'altra funzione che ne valida alcuni campi.
Il mio problema è come far prendere, alla seconda funzione i nodi figli del form, in particolare gli input text.
Ho scritto le seguenti due funzioni:

function valida(){

var forms = document.getElementsByTagName("form");


for(i=0; i<forms.length; i++){

checkValida(forms[i].childNodes);
}

}

function checkValida(form){

var patternNumerico = /^[0-9]+(\.[0-9]*)?$/;

var navInput = form.getElementsByTagName("input");

for(i=0; i<navInput.length; i++){
if(navInput[i].type=="text"){
if(navInput[i].value.length>0 && !patternNumerico.test(navInput[i].value))
alert('Campo NAV non valido');
return false;
}
}

return true;
}


Il problema lo incontro alla riga:

var navInput = form.getElementsByTagName("input");


Il form contiene una tabella, che ha al suo interno varie righe e varie colonne.
In una colonna sono contenuti degli elementi input di tipo text, che sono quelli che mi interessano.
Come faccio a prenderli?
Grazie a tutti, ciao ciao.
Se intendi prendere il valore dei textfield, basta accedere alla proprietà value dell'oggetto: document.form.textfield.value .

Se al form dichiari l'attributo name puoi accedere allo stesso senza doverlo catturare con getElementById:

<form name="modulo">
<input type="text" name="miotesto">
<!-- ... etc etc ... -->

Ci accedi facendo semplicemente:
document.modulo.miotesto
avendone ora il riferimento basta accedere alla proprietà value (document.modulo.miotesto.value) e potrai lavorare sul valore, ovvero sul testo inserito.

Ciao!

PS. aggiungo che in Javascript quasi sempre si usa il tag name per accedere direttamente alle proprietà dell'orggeto come ti ho illustrato sopra, per ovvia comodità.