Итерация по одним и тем же элементам формы - PullRequest
2 голосов
/ 24 марта 2010

Если форма имеет один и тот же тег несколько раз.

Как получить его значение в javascript.

    <script>
     function validate()
      {
        //get all values of elmone
      }
     </script>


<form>
<input type="text" size="15" value="Hello World" name="elmOne">
<input type="text" size="15" value="next Hello World" name="elmOne">
 <input type="button" onclick="javascript:validate()" value="validate">
</form> 

Спасибо ..

Ответы [ 4 ]

2 голосов
/ 24 марта 2010

Не принято называть два разных элемента ввода текста с общим именем. Однако, возвращаясь к вопросу, вы всегда можете использовать document.getElementByName ('elmOne'); чтобы получить список совпадающих входных данных, затем переберите его для значения

var input_list = document.getElementsByName('elmOne');

for(var i = 0; i < input_list.length; i++) {
    // either way should get you the value
    console.debug(input_list[i].value, input_list[i].getAttribute('value'));
}

Вы можете обратиться к этой странице для получения дополнительной информации о совместимости

1 голос
/ 24 марта 2010

вы можете использовать свойство document.forms , чтобы получить массив форм документов, начиная с индекса 0 для первого элемента формы, появившегося в коде HTML, и так далее.или вы можете получить доступ к форме, имеющей атрибут name, используя имя в качестве индекса массива.поэтому, чтобы получить доступ к первой форме в вашем HTML-коде, используйте:

var f = document.forms[0];

, и если форма имеет имя, например «loginForm», вы можете получить ее как:

var f = document.forms['loginForm'];

теперь, когдау вас есть ссылка на форму, вы можете получить доступ к элементам в ней, используя свойство .elements формы.это свойство является массивом, который имеет те же свойства индексации, что и document.forms.так что вы можете обращаться к каждому элементу for по его порядку в коде HTML, используя числовые индексы, 0 для первого, или использовать именованные индексы, поместив атрибут имени каждого элемента в качестве индекса.

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

var el = f.elements[1];

или если элемент имеет атрибут имени «username», вы можете ссылаться на него следующим образом:

var el = f.elements["username"];

таким образом, вы можете ссылаться на любой элементв любой форме в вашем документе.

0 голосов
/ 24 марта 2010
var items = document.getElementsByName("elmOne");
for (var i = 0; i < items.length; i++) {
   var item = items[i];
}

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

Решение состоит в том, чтобы найти другой способ связать эти элементы и использовать его, чтобы получить нужные элементы.

0 голосов
/ 24 марта 2010

var elem = document.form.all.namedItem("elmOne") вернет массив обязательных элементов. Затем просто переберите его и получите значения, используя elem.value

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...