Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Перебор всех елементов формы


Автор: Wiedzmin 22.9.2006, 19:22
Как перебрать все елементы формы и выделить их значения (например, сделать запрос вида ?&поле1=значение1&поле2=значение2&...)? В общем свойства type нету, а чекбоксы, текстовые поля, скрытые поля, селекты и тд отличаются расположением значения.

Вариант работает, самое интересное, что скрытые поля имеют атрибут checked, и им надо прописывать "<input type=hidden ... CHECKED>" (тогда в фае фоксе срабатывает, а в ИЕ - нет, так как чекед их не отмечает).

Код

function get_form(f)
{  
   for(var i=0; i<f.elements.length; i++)
   { el=f.elements[i];

     if (el.radio==null && el.selectedIndex==null && el.checked==null && el.defaultChecked==null )
     {
       val=el.value;
     }
     else if (el.selectedIndex!=null)
       val=el.options[el.selectedIndex].value;
     else if (el.radio!=null)
     {  for(var j=0; j<el.length;j++)
         if (el.radio[j].checked==true)
            val=el.radio[j].value;
     } else if (el.checked!=null && el.checked==true)
       val=el.value;

     if (val)
       addstr+='&'+f.elements[i].name+'='+escape(val);
     val='';
   }
   return addstr;
}


Есть какие-то другие варианты, чтобы работали все типы полей и во всех браузерах?

Автор: Sardar 22.9.2006, 19:49
Цитата(Wiedzmin @  22.9.2006,  18:22 Найти цитируемый пост)
В общем свойства type нету, а чекбоксы, текстовые поля, скрытые поля, селекты и тд отличаются расположением значения.

С каких это пор type нет? Читаем http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html, всё станет ясно.

Автор: Wiedzmin 22.9.2006, 20:20
document.form1.elements[0].type - правильная запись будет?

Автор: Sardar 22.9.2006, 22:47
Неужели сложно поверить/посмотреть? Да.
С одним но, document.form1 это древнее нетскейповское обращение к элементу, ты должен это забыть как страшную ересь. Дай форме id, доставай как document.getElementById(id). На крайняк можно document.forms.formName, но пользовать DOM 0 коллекции в последнее время тоже не красиво.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)