Передача формы в IE
Добрый день!
Столкнулся со следующей проблемой.. AJAX (хоть это и не важно). Есть форма <form name="search" method="post"> с кучей полей, форма прекрасно работает, подгружая данные при изменении параметров по событию onchange.. Например, <select id="region" size="1" name="region" onchange="check_form(this.form,a,b,c,d,e);"> <option value="0">Любой регион</option> <option value="1">блабла</option> То есть при изменении в скрипт отправляются данные формы и еще некоторые параметры. Форма в этом случае передается в виде массива и в JS отлично обрабатывается. Как в ФФ, так и в ИЕ. Код:
function check_form(category,form,type,dir,field) { <a style="cursor:pointer;font-size:13px;" onclick="check_form(forms[\'search\'],e,f,g,h,i');">Клик!</a> А здесь происходит ошибка: В ФФ все работает прекрасно, a в ИЕ выдает: "Ошибка: 'elements' - есть null или не является объектом" Проверил отладчиком, и выяснилось, что в данном случае (в случае со ссылками) в ФФ форма, как ей и положено, передается в виде: [object HTMLFormElement], а в ИЕ в виде: [object HTMLCollection] и, соответственно, не парсится.. Как быть? Есть какое-то решение, чтобы в ИЕ тоже передавался [object HTMLFormElement] или делать проверку в JS и если ИЕ - разбирать приходящий [object HTMLCollection] ? Вот ссылка, если любопытно: http://autobb.spb.ru/index.php?option=com_ajaxauto |
В общем, сам спросил, сам отвечаю..
Оказывается, глупо передавать в событии массив элементов формы для функции JS, когда можно получить этот самый массив по document.getElementById("form id") :) Теперь все работает.. |
Цитата:
она один элемент возвращает. максимум поделись магией) |
а вот и нет - возвращает вовсе даже массив, как оказалось
В html в форме прописал id <form id="formsearch" method="post"> Из всех селектов и ссылок, где есть событие ончейндж или онклик, убрал this.form и form[search], например: <select id="region" size="1" name="region" onchange="check_form();"> и <a style="cursor:pointer;font-size:13px;" onclick="check_form();">Клик!</a> в JS элементы формы получаю, разбирая полученный по getElementById массив: Код:
var form = document.getElementById("formsearch"); // получаю массив элементов формы "formsearch" |
он не массив возвращает,а форму :)
<form id="c"> <input><input><input><input><input> </form> <script> alert( document.getElementById('c') ) // [object HTMLFormElement] </script> хотя.. какая разница) |
Дадад, еще правильней - объект ))
|
Часовой пояс GMT +3, время: 00:00. |