Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > неподключается обработчик onChange в IE6


Автор: kaa 28.11.2007, 19:12
Есть код:

Код

$(document).change(function(evt){
            //извлекаем объект события в зависимости от браузера
            alert("ok1");
    });



В Firefox-e 2.0.0.6 работет, в IE отказывается напрочь, у любых элементов, но интересует в частности <SELECT>

В чем косяк? Может кто сталкивался?

Автор: ksnk 28.11.2007, 19:54
А установить onchange на отдельный элемент , не весь document, получается?

Автор: kaa 29.11.2007, 09:03
ksnk, 

Код

$("SELECT").change(function(evt){..
.

Тоже не работает...
Но если прописываю обработчик onchange в самом теге SELECT то срабавтывает - но это мне нужно меньше всего :(
Нужно, чтобы событие обрабатывал обязательно документ :(

ЗЫ: событие keydown и click  подключаются и обрабатываются нормально... А вот onchange в IE нивкакую :(

Автор: ksnk 29.11.2007, 09:22
А у меня почему тогда срабатывает? Может я чего делаю неправильно? ;-)
Код

<head>
<script  type="text/javascript" src='jquery.js'></script>
<script  type="text/javascript">
$(function(){
$('select').change(function(evt){
            //извлекаем объект события в зависимости от браузера
            alert("ok2");
    })
})
</script>
</head><body>
<select  id='hello'><option>1</option><option>1</option><option>1</option><option>1</option><option>1</option></select>
<input type="text" id='hello1'>
<input type="text" id='hello2'>

</body>

Автор: kaa 29.11.2007, 09:32
ksnk, 
Щас попробую...

Добавлено через 4 минуты и 55 секунд
Так, а у мя не срабатывает в IE :(

Код

$().ready(function(){
    
    //Подрубаем обработчик события click к document 
    $(document).click(function(evt){
        //извлекаем объект события в зависимости от браузера
        if(window.event)
            ClickHandler(null, window.event);
        else
            ClickHandler(evt, null);
    });    
    //Подрубаем к документу обработчик keydown(для валидации логина и имени пр рагистрации)
    /*$(document).keydown(function(evt){
        //извлекаем объект события в зависимости от браузера
        //alert("ok");
    });    */
    //Подрубаем обработчик события select к document
    $('select').change(function(evt){
            //извлекаем объект события в зависимости от браузера
            alert("ok2");
    });
    //Запрашмваем содержание секции MAIN
    GetContent('main','first');
    //Запрашиваем содержание секции NAVIGATION
    GetContent('navigation','first');
});


Я кароче незнаю что делать :(

Автор: kaa 29.11.2007, 09:57
Мдям...

В общем к документу обработчик цепляться нихочет никак, а ваш вариант всётаки заработал - поставил его куда нада...

Но вот еще неплохо было бы прицепить к документу, а то после каждой подгрузки, по ajax-у select-а, придётся обработчик цеплять :(

Автор: ksnk 29.11.2007, 10:41
Цитата(kaa @  29.11.2007,  09:57 Найти цитируемый пост)
Но вот еще неплохо было бы прицепить к документу, а то после каждой подгрузки, по ajax-у select-а, придётся обработчик цеплять :
 У IE по другому устроена модель распространения событий.

А кто мешает сделать вот так? на пару букв больше писать придется и все...
Код

$('select, input, textarea').change(function(){
...
})



Автор: kaa 29.11.2007, 13:46
ksnk, 
Беда не в том что много smile Беда в том что заранее неизвестно (для клиентского скрипта ессно) сколько и когда селектов буит.
они у мне подгружаются ajax-ои, причем не их содержимое, а сами элементы, соответственно. если я пропишу такую строку в начале документа, то библиотека подключет обработчики тока к тем селектам, которые будут на данный момент.В итоге, после каждой подгрузке придётся писат этот код, как я делаю щас... 

Ну, в общем вопрос можно назвать решонным, IE маздай!

Спасибо за помощь!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)