2010-12-13 16 views

Antwort

11
document.forms["form_name"].getElementsByTagName("input"); 
+36

Solange keine Auswahl oder Textfelder vorhanden sind ;-) – Gurnard

+0

Können Sie es in einer Anwendung mit mehreren Eingaben mit Werten zeigen, die es erfasst? –

+0

Ich ziehe 'document.forms [ "formular_name"]. GetElementByClassName ("myClass")' –

3
var inputs = document.getElementById("formId").getElementsByTagName("input"); 
var inputs = document.forms[1].getElementsByTagName("input"); 
0

Wie würden Sie zwischen den Formen unterscheiden mögen? Sie können verschiedene IDs verwenden, und dann diese Funktion nutzen:

function getInputElements(formId) { 
    var form = document.getElementById(formId); 
    if (form === null) { 
     return null; 
    } 
    return form.getElementsByTagName('input'); 
} 
79
document.getElementById("someFormId").elements; 

Diese Sammlung <select> Elemente auch enthalten, aber Sie wollen wahrscheinlich, dass.

+0

Es scheint, dass document.getElementById ("someFormId") auch funktioniert. Gibt es einen besonderen Grund für das Hinzufügen von Elementen am Ende? – Andrew

+2

@Andrew: Meine Absicht war, dass "someFormId" die ID eines '' -Elements ist, keine Eingabe. 'elements' ist eine Eigenschaft eines Formularelements; Es ist eine Sammlung von Elementen innerhalb des Formulars. Siehe https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.elements –

+1

> ok, ich verstehe was .elements ist. Soll ich es also benutzen, wenn es auch ohne es geht? Vielleicht fügt das Hinzufügen von .elements weniger Knoten hinzu und Sie erhalten dadurch eine bessere Leistung? – Andrew

7

Es ist auch möglich, diese zu verwenden:

var user_name = document.forms[0].elements[0]; 
var user_email = document.forms[0].elements[1]; 
var user_message = document.forms[0].elements[2]; 

Alle Elemente der Formen werden in einem Array von Javascript gespeichert. Dies nimmt die Elemente aus der ersten Form und speichert jeden Wert in einer eindeutigen Variable.

13

Sie alle konzentrieren sich auf das Wort "Get" in der Frage. Probieren Sie die Eigenschaft 'elements' einer beliebigen Form aus, die eine Sammlung ist, durch die Sie iterieren können, d. H. Sie schreiben Ihre eigene 'get'-Funktion.

Beispiel:

function getFormElelemets(formName){ 
    var elements = document.forms[formName].elements; 
    for (i=0; i<elements.length; i++){ 
    some code... 
    } 
} 

Hoffnung, das hilft.

4

einfache Form Code

<form id="myForm" name="myForm"> 
     <input type="text" name="User" value="Arsalan"/> 
     <input type="password" name="pass" value="123"/> 
     <input type="number" name="age" value="24"/> 
     <input type="text" name="email" value="[email protected]"/> 
     <textarea name="message">Enter Your Message Her</textarea> 

    </form> 

Javascript-Code

//Assign Form by Id to a Variabe 
    var myForm = document.getElementById("myForm"); 
    //Extract Each Element Value 
    for (var i = 0; i < myForm.elements.length; i++) { 
    console.log(myForm.elements[i].value); 
    } 

JSFIDDLE: http://jsfiddle.net/rng0hpss/

+0

Ich denke, das wird divs zurückkehren, reicht auch – Stranger

+0

.. es wird wieder [Array von 'input' Elemente] (https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/elements), außer 'type =" image "' – Mike

3

verwenden

var theForm = document.forms['formname'] 
[].slice.call(theForm).forEach(function (el, i) { 
    console.log(el.value); 
}); 

Der el für die jeweilige steht Formularelement. Es ist besser, dies als die foreach-Schleife zu verwenden, da die foreach-Schleife auch eine Funktion als eine der Elemente zurückgibt. Dies gibt jedoch nur die DOM-Elemente des Formulars zurück.

1

Wenn Sie einen Verweis auf ein Feld im Formular oder ein Ereignis haben, müssen Sie das Formular nicht explizit nachschlagen, da jedes Formularfeld ein form-Attribut aufweist, das auf das übergeordnete Formular verweist.

Wenn Sie ein Ereignis haben, enthält es ein target Attribut, das auf das Formularfeld zeigt, das es ausgelöst hat, was bedeutet, dass Sie über myEvent.target.form auf das Formular zugreifen können.

Hier ist ein Beispiel ohne Formular-Lookup-Code.

<html> 
<body> 
    <form name="frm"> 
     <input type="text" name="login"><br/> 
     <input type="password" name="password"><br/> 
     <button type="submit" onclick="doLogin()">Login</button> 
    </form> 
    <script> 
     function doLogin(e) { 
      e = e || window.event; 
      e.preventDefault(); 
      var form = e.target.form; 
      alert("user:" + form.login.value + " password:" + form.password.value); 
     } 
    </script> 
</body> 
</html> 

Wenn Sie mehrere Formulare auf der Seite haben Sie noch brauchen sie nicht nach Namen oder ID zu kennzeichnen, weil Sie immer die richtige Form Instanz über den Fall erhalten werden oder über einen Verweis auf eine Feld.

Verwandte Themen