2010-05-30 1 views
0

Я разрабатываю форму с PHP и jQuery.HTML onChange для SELECT не работает в IE

Вот ссылка:

http://www.yamaha-motor.com.pe/extreme/php/yamaha/registro/FrmRegistro01.php

Это прекрасно работает на Firefox, но не в IE.

Что вы можете мне посоветовать ??

Благодаря

+0

Что не работает? он работает для меня в Firefox и IE. – scunliffe

+1

Всегда включайте версию IE, с которой вы столкнулись, есть множество движков в игре и широко используются с различными причудами. –

+0

Если вы говорите о флажке, появляющемся при выборе из списка, работает для меня в IE8, IE7 и режиме Quirks. Есть ли еще какое-то поведение, которое вы ожидаете? – user113716

ответ

0

Я просто решил.

Исправление было не сделать что-то вроде:

$('select#cbxMeses').attr('onchange', "javascript:fn_mesSeleccionado()"); 

... и сделать это:

var select1 = document.getElementById("cbxMeses"); 
select1.changed = false; 
select1.onchange = fn_mesSeleccionado; 

Видимо IE пытается выполнить весь код JavaScrpit, прежде чем все элементы DOM оказаны.

4

Ну ваша страница настолько сложна и усеяна вырезания и вставки кода это трудно понять, что именно проблема вы хотите продемонстрировать. Но краткое описание скрипта показывает, что вы нюхаете за addEventListener и нюхаете за IE, в частности, и делаете совершенно разные вещи для каждого, многие из которых просто закомментированы. Итак, что вы ожидаете?

$('select#cbxMeses').attr('onchange', "javascript:fn_mesSeleccionado()"); 

Это очевидная ошибка. Во-первых, поскольку атрибуты обработчика событий не должны иметь javascript: в начале (это только для javascript: псевдо-URL-адресов, которые также должны использоваться )).

Но в любом случае это не совсем правильный способ прикрепления обработчиков событий к элементам; он не будет работать в IE, и уродливо и неэффективно ставить JS-код в строки. Используйте функцию (либо имя функции, либо inline function() { ... }) и один из методов привязки событий jQuery.

$(document).ready(function() { 
    $('#cbxMeses').change(fn_mesSeleccionado); 
    $('#cbxAnos').change(fn_anoSeleccionado); 
    ... 
}); 

Это работает везде! Не нужно вообще обнюхивать браузеры!

+0

Я уже нашел решение ... Проблема была из-за проблемы при использовании сценариев в IE. IE попытался выполнить JS-скрипт перед загрузкой DOM, поэтому слушатели событий, которые я добавил через jQuery, к некоторым элементам SELECT, которые не работают, но теперь они ... Кстати ... Если ничего не имеет плохо при размещении строки с именем функции на слушателе ... Это то же самое – 2010-05-31 15:58:51

Смежные вопросы