2010-12-13 3 views

ответ

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

до тех пор, пока нет выбора или текстового поля ;-) – Gurnard

+0

Можете ли вы показать его в приложении для использования с несколькими входами со значениями, которые он захватывает? –

+0

Я предпочитаю 'document.forms [" form_name "]. GetElementByClassName (" myClass ")' –

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

Как вы хотели бы провести различие между формами? Вы можете использовать различные идентификаторы, а затем использовать эту функцию:

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

Эта коллекция будет также содержать <select> элементы, но скорее всего вы захотите.

+0

Похоже, что document.getElementById ("someFormId") также работает. Любая конкретная причина для добавления элементов в конце? – Andrew

+2

@Andrew: Мое намерение состояло в том, что «someFormId» - это идентификатор элемента '

', а не ввода. 'elements' является свойством элемента формы; это набор элементов в форме. См. Https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.elements –

+1

> ОК, я понимаю, что такое элементы. Так я должен использовать его, если он работает даже без него? Возможно, добавление .elements выбирает меньше узлов и, следовательно, вы получаете лучшую производительность? – Andrew

7

Также можно использовать это:

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

Все элементы форм хранятся в массиве с помощью JavaScript. Это берет элементы из первой формы и сохраняет каждое значение в уникальную переменную.

13

Вы все концентрируетесь на слове «получить» в вопросе. Попробуйте свойство «elements» любой формы, которая представляет собой коллекцию, которую вы можете перебирать, т. Е. Вы пишете свою собственную функцию «get».

Пример:

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

Надежда, что помогает.

4

SIMPLE Код Форма

<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 Код

//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

Я думаю, это вернет divs, также охватывает. – Stranger

+0

он вернет [массив элементов 'input'] (https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/elements), кроме 'type =" image "' – Mike

3

Используйте этот

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

эш выступает за конкретный элемент формы. Лучше использовать это, чем цикл foreach, поскольку цикл foreach также возвращает функцию как один из элементов. Однако это возвращает только элементы DOM формы.

1

Если у вас есть ссылка на любое поле в форме или событии, то вам не нужно явно искать форму, так как каждое поле формы имеет атрибут form, указывающий на его родительскую форму.

Если у вас есть событие, то оно будет содержать атрибут target, который укажет на поле формы, которое его вызвало, а это значит, что вы можете получить доступ к форме через myEvent.target.form.

Ниже приведен пример без кода поиска формы.

<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> 

Если у вас есть несколько форм на странице вы еще не нужно маркировать их по имени или идентификатору, потому что вы всегда получите правильный экземпляр формы с помощью события или через ссылку на поле.

Смежные вопросы