2010-10-24 20 views
16

Ho una forma dinamica.Convalida del modulo; Ottieni tutto "input type = text" e convalida?

Ciò significa che i nomi degli ingressi sono cambiati e non uguali, ma sono tutti uguali "TYPE".

Quindi ho bisogno di avere un javascript che ottiene tutti tipo di input = "testo" e li convalida. È possibile?

Se sì, come?

Tutto ciò che devo controllare è che non siano vuoti e che siano solo numerici.

Grazie

+0

è possibile utilizzare jQuery? –

+0

scusa Pekka, no non posso al momento. –

+0

perché è questo php taggato se hai bisogno di un JavaScript? – Gordon

risposta

24

Usa document.querySelectorAll("input[type=text]") per ottenere la matrice con tutti gli ingressi di tipo "testo". È necessario iterare attraverso di loro e convalidare.

Si noti inoltre che probabilmente si vorrà utilizzare qualcosa come #container_id input[type=text] per assicurarsi che non si otterranno nodi di cui non si ha bisogno.

Ecco un esempio di come il vostro convalida dovrebbe apparire:

var nodes = document.querySelectorAll("#container_id input[type=text]"); 
for (var i=0; i<nodes.length; i++) 
    if (node.value == "" || !/[0-9.]+/.test(node.value)) 
     return "invalid."; 
return "valid"; 
+0

Cerca di spiegare il #container_id un po 'di più, a cosa serve? –

+0

Cosa succede se hai più input su quella pagina e vuoi solo quelli nella tua forma? La prima query restituirà tutti, e non è quello che ti serve. Se vuoi recuperare solo quelli nella tua forma necessaria, usa qualcosa come 'ottieni tutti i nodi figli del nodo con id" id_contenitore "che sono input di tipo testo'. Tradotto in query selector, ottieni la seconda versione. Ti consiglio di dare un'occhiata a http://www.w3.org/TR/css3-selectors/#selectors, per vedere come e cosa puoi fare con i selettori. –

+0

Nota: document.querySelectorAll non funziona in IE. Ma puoi usare jQuery per ottenere lo stesso effetto su tutti i browser. – adamJLev

6

Qualcosa del genere:

var inp = document.getElementsByTagName('input'); 
for(var i in inp){ 
    if(inp[i].type == "text"){ 
     if(!/^\d{1,}$/.test(inp[i].value)){ 
      alert('Invalid value detected'); 
      inp[i].focus(); 
      break; 
     } 
    } 
} 
+0

non funziona, l'avviso non viene visualizzato –

+0

http://www.jsfiddle.net/U5Y5y/ Funziona per me in Opera 10, FF 3.6, Chrome 7 e IE 8. –

+1

funziona anche per me, safari, ie6 + 7 , Non vedo alcun motivo per cui non dovrebbe funzionare –

Problemi correlati