Слушатель события Prototype, которого я использую для изменений в избранных меню, не инициирован в IE.
Event.observe('use_billing', 'change', Checkout.getBillingData);
Это хорошо работает в Firefox (конечно), но ничего не происходит в IE (конечно) - я гуглил это в течение некоторого времени, но я не нашел подходящее решение этой проблемы. Я читал существуют проблемы, но я ничто не нашел полезным, чтобы обойти проблему и заставить это работать.
Я действительно стараюсь не использовать встроенные триггеры события, потому что они являются навязчивыми и делают для грязного документа подверженный ошибкам:
<select id='use_billing' onchange="Checkout.getBillingData();">....</select>
Любые идеи были бы прекрасными - это - единственная вещь, мешающая этому проекту идти от беты до производства.
Я нашел причину - это была не проблема с фокусом, оказалось, что у меня были одинаковые значения имени и идентификатора элемента формы - я изменил значение идентификатора, и все работало нормально.
Это обычная проблема IE. Он не запускает события change
, пока элемент не потеряет фокус.
Чтобы убедиться, что это действительно причина вашей проблемы, попробуйте изменить меню, а затем нажмите вкладку, чтобы переместить фокус на другой элемент. Если ваш обратный вызов сработает правильно, вы узнаете, что другой проблемы нет.
Раньше я обходил эту проблему, прислушиваясь к другим событиям, таким как щелчок
или нажатие клавиши
. Вы можете добавить проверку к своему обратному вызову, чтобы убедиться, что значение действительно отличается от предыдущего, чтобы гарантировать, что вы не обрабатываете событие больше раз, чем необходимо (поскольку другие браузеры будут запускать как щелчок
, так и измените
одновременно, если они нажмут на новое значение).