Я пытаюсь использовать Prototype.js 'Form.element.observer , чтобы выполнить ajax в веб-приложении. Один и тот же наблюдатель применяется к нескольким входам в форме (не ко всем). Наблюдатель запускает ajax, который сериализует форму, отправляет ее и в конечном итоге заменяет саму форму новой версией с сервера.
Например - скажем, есть страна выбора. Когда страна выбрана, форма сериализуется, отправляется на сервер, и сервер отвечает новой формой с выбранной страной и новым раскрывающимся списком для выбора провинции, который ранее не отображался. Эта новая форма заменяет старую, и на место ставится новый набор наблюдателей (можно выбрать провинцию, выбрать город и т. Д.)
Это нормально работает в FF, Chrome и Safari. В IE, однако, у меня проблемы с выбором. Как только я нажимаю на кнопку выбора, страница «зацикливается навсегда»; форма запрашивается и заменяется снова и снова, навсегда.
Я сильно подозреваю, что это связано со следующей частью документации на Form.element.observer:
Это вызывает обратный вызов при изменении значения поля формы (в соответствии с Form.Element.getValue). (Обратите внимание, что когда значение действительно изменяется, оно может изменяться от браузера к браузеру, особенно с полями выбора.)
Другими словами, в большинстве браузеров свойство getValue изменяется, когда кто-то нажимает на опцию выбора. Я подозреваю, что в IE он ведет себя по-другому (просто наводя курсор на опции, не нужно нажимать на них).
Кто-то нашел способ «наблюдать» за выбором в IE с prototype.js таким образом, что он вызывает обратный вызов только тогда, когда один из его вариантов действительно выбран, как в других браузерах?