Как передать элементы формы в функцию проверки JavaScript? - PullRequest
2 голосов
/ 25 августа 2009

У меня есть форма, в которой перечислены пользователи, и для каждого пользователя есть выпадающее меню (2 варианта: ожидание, готово) и текстовое поле для комментариев. Каждое раскрывающееся меню помечено «status-userid», а текстовое поле комментариев - «comments-userid» ... поэтому для пользователя 92 поля в его строке помечены status-92 и comments-92.

Мне нужно проверить форму следующим образом: Если значение статуса «закончено», я должен убедиться, что пользователь ввел комментарии, соответствующие этому конкретному раскрывающемуся меню.

Пока у меня есть:

function validate_form () {
valid = true; 

    /*here's where i need to loop through all form elements */
    if ( document.demerits.status-92.value == "finished" &&   
         document.demerits.comments-92.value == "")
    {
            alert ( "Comments are required!" );
            valid = false;
    }

    return valid;
}

Как мне перебрать все элементы status-userid в массиве формы ?! Или есть другой способ сделать это?

Ответы [ 2 ]

2 голосов
/ 25 августа 2009

Это должно быть сделано в сыром Javascript (без фреймворка).

var form = document.demerits;

for (var i = 1; i <= 100; i++)
{
  if (form["status-" + i.toString()].value == "finished" &&
      form["comments-" + i.toString()].value == "")
  {
      // enable visibility of element next to comments indicating validation problem
      valid = false;
  }
}

Использовать оповещения было бы плохо.

0 голосов
/ 25 августа 2009

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

var dropdowns = document.demerits.getElementsByTagName("select");

for (var i = 0; i < dropdowns.length; i++)
{
    // You can now reference the individual dropdown with dropdowns[i]
}
...