2010-10-24 5 views
16

Ich habe ein Formular, das dynamisch ist.Formularvalidierung; Holen Sie alle "Eingabetyp = Text" und validieren?

Das heißt, die Eingaben Namen sind geändert, und nicht die gleichen, aber sie sind alle gleich "TYPE".

Also brauche ich ein Javascript, das alle Eingabe Typ = "Text" bekommt und validiert sie. Ist das möglich?

Wenn ja, wie?

Alles was ich überprüfen muss ist, dass sie nicht leer sind, und dass sie nur numerisch sind.

Dank

+0

Können Sie jQuery verwenden? –

+0

Entschuldigung Pekka, nein kann ich momentan nicht. –

+0

Warum ist dieses PHP markiert, wenn Sie ein JavaScript benötigen? – Gordon

Antwort

24

Verwenden document.querySelectorAll("input[type=text]") das Array mit allen Eingängen des Typs "Text" zu bekommen. Sie müssen sie durchlaufen und validieren.

Beachten Sie auch, dass Sie wahrscheinlich etwas wie #container_id input[type=text] verwenden möchten, um sicherzustellen, dass Sie keine Knoten erhalten, die Sie nicht benötigen. Hier

ist ein Beispiel dafür, wie die Validierung aussehen sollte:

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

Um die #container_id ein bisschen mehr zu erklären, wozu dient es? –

+0

Was ist, wenn Sie auf dieser Seite mehrere Eingaben haben und diese nur in Ihrem Formular haben möchten? Die erste Abfrage gibt alle zurück, und das ist nicht das, was Sie brauchen. Wenn Sie nur diejenigen in Ihrer benötigten Form abrufen möchten, verwenden Sie so etwas wie 'Alle untergeordneten Knoten des Knotens mit der ID 'container_id', die Eingaben des Typs 'text' sind. In die Selektorabfrage übersetzt, erhalten Sie die zweite Version. Ich würde Ihnen empfehlen, einen Blick in http://www.w3.org/TR/css3-selectors/#selectors zu werfen, um zu sehen, wie und was Sie mit Selektoren machen können. –

+0

Hinweis: document.querySelectorAll funktioniert nicht in IE. Aber Sie können jQuery verwenden, um den gleichen Effekt in allen Browsern zu erreichen – adamJLev

6

So etwas:

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

wont Arbeit, Warnung kommt nicht –

+0

http://www.jsfiddle.net/U5Y5y/ Arbeiten für mich in Opera 10, FF 3.6, Chrome 7 und IE 8. –

+1

funktioniert für mich auch, Safari, ie6 + 7 Ich sehe keinen Grund, warum es nicht funktionieren sollte –

Verwandte Themen