Сделать пузыри обмена элементами формы в Internet Explorer - PullRequest
2 голосов
/ 28 февраля 2011

Как сделать так, чтобы событие onChange различных элементов формы всплывало до родительского объекта формы в Internet Explorer?Когда в IE изменяются поля выбора, радио-кнопка, ... почти все ..., onChange родительской формы не запускается.Мои формы динамически меняются, поэтому будет трудно взломать их, прослушивая каждый дочерний элемент формы.

HTML

<form id="myForm">
 <select>
  <option>uno</option>
  <option>dos</option>
 </select>
 <input type="radio" name="videoDevice" value="tres" checked="checked" />
 <input type="radio" name="videoDevice" value="cuatro" />
</form>

JS

$('myForm').observe(
 'change', 
 function() {
  // this only runs in non-IE browsers
  alert('the form changed');
 }
);

Кстати, я использую платформу Prototype.Разве он не должен был обрабатывать различия между браузерами для меня?

Ответы [ 2 ]

1 голос
/ 04 марта 2011

Мне пришлось использовать хак для IE. Я вручную заставил все дочерние элементы формы вызывать обратный вызов onChange вместо того, чтобы родительская форма делала это. Я бы хотел, чтобы было более чистое решение.

$('myForm').select('input', 'radio', 'textarea').each(
 function(formElement) {
  formElement.observe(
   'change', 
   function() {
    alert('changed');
   }
  );
 }
);
0 голосов
/ 28 февраля 2011

Я думаю, что в вашем коде может быть простая синтаксическая ошибка:

$('myForm') должно быть $('#myForm')

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