Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.06.2011, 14:41
Новичок на форуме
Отправить личное сообщение для Rojas Посмотреть профиль Найти все сообщения от Rojas
 
Регистрация: 25.05.2011
Сообщений: 6

Передача формы в 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)  {
  var check = new Array();
  var query = new Array();

  for(i=0;i<(form.length); i++) {

	if (form.elements[i].type == "checkbox") {
		  if (form.elements[i].checked)
		  {
		  	 check.push(form.elements[i].name)	;
		  }

	}
........
........
}
Вне формы есть несколько ссылок, которые при клике должны передавать в скрипт данные той же самый формы + свои какие-то параметры:
<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
Ответить с цитированием
  #2 (permalink)  
Старый 13.06.2011, 15:32
Новичок на форуме
Отправить личное сообщение для Rojas Посмотреть профиль Найти все сообщения от Rojas
 
Регистрация: 25.05.2011
Сообщений: 6

В общем, сам спросил, сам отвечаю..
Оказывается, глупо передавать в событии массив элементов формы для функции JS, когда можно получить этот самый массив по document.getElementById("form id")

Теперь все работает..
Ответить с цитированием
  #3 (permalink)  
Старый 13.06.2011, 15:58
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Rojas Посмотреть сообщение
можно получить этот самый массив по document.getElementById("form id")
это как???

она один элемент возвращает. максимум

поделись магией)
Ответить с цитированием
  #4 (permalink)  
Старый 13.06.2011, 16:21
Новичок на форуме
Отправить личное сообщение для Rojas Посмотреть профиль Найти все сообщения от Rojas
 
Регистрация: 25.05.2011
Сообщений: 6

а вот и нет - возвращает вовсе даже массив, как оказалось
В 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"
  for(i=0;i<(form.length); i++) {
  var name = form.elements[i].name ; // получаю имя по имени
  var value =  form.elements[i].value; // получаю значение по value
  ...........
// всячески их обрабатываю
........
}
profit
Ответить с цитированием
  #5 (permalink)  
Старый 13.06.2011, 16:30
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

он не массив возвращает,а форму

<form id="c">
<input><input><input><input><input>
</form>

<script>
alert( document.getElementById('c') ) // [object HTMLFormElement]
</script>


хотя.. какая разница)
Ответить с цитированием
  #6 (permalink)  
Старый 13.06.2011, 16:37
Новичок на форуме
Отправить личное сообщение для Rojas Посмотреть профиль Найти все сообщения от Rojas
 
Регистрация: 25.05.2011
Сообщений: 6

Дадад, еще правильней - объект ))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача данных из формы Eugene Общие вопросы Javascript 4 15.12.2010 11:41
Передача данных с формы на JS mrDeko Общие вопросы Javascript 8 21.08.2010 12:19
Передача данных из формы в новое окно Flyd Общие вопросы Javascript 0 01.08.2010 15:45
Передача данных из формы в форму на разных страницах Катерина Общие вопросы Javascript 1 04.03.2010 18:18
Передача фокуса из формы после ввода символа kuh Общие вопросы Javascript 2 08.03.2009 19:50