Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите навесить обработчик (https://javascript.ru/forum/misc/10301-pomogite-navesit-obrabotchik.html)

bublik 27.06.2010 14:09

Помогите навесить обработчик
 
Здравствуйте.
Имеется выпадающее меню на javascript со сменным background.
Не удается навесить обработчик onchange.

<select class="kuk" >
  <option value="1">Русский</option>
  <option value="2">France</option>
</select>

фрагмент скрипта
function srReplaceSelects()
{
/*  var s = document.getElementsByTagName('select');*/
     var s = $('select.kuk');   
     var len = s.length
     for (var i = 0; i < len; i++)
      rsSelectReplace(s[i]);
    srAddEvent(document, 'click', srOnDocumentClick);
}

function rsSelectReplace(sel)
{
    var ie6 = (navigator.userAgent.search('MSIE 6.0') != -1);

    var ul = document.createElement('ul');
    if (!ie6) {
        ul.className = 'srList';
    } else {
        ul.className = 'srList2';
    }
    ul.className += ' srCollapsed';
    ul.className += ' srBlur';

    ul.srSelect = sel;
    sel.srReplacement = ul;

    sel.className += ' srReplacedSelect';
    sel.onfocus = function() { this.srReplacement.className = this.srReplacement.className.replace(/[\s]?srBlur/, ' srFocus'); }

    sel.onblur = function() {
        this.srReplacement.className = this.srReplacement.className.replace(/[\s]?srFocus/, ' srBlur');
    }
    sel.onchange = function()
    {
        alert("ch");
        var ul = this.srReplacement;
        ul.srSelectLi(ul.childNodes[this.selectedIndex]);
    }
...



функция sel.onchange = function() не работает

$('select.kuk').onchange(function(){alert('xxx'); }); - так тоже нет

Starkua 27.06.2010 16:19

Если я правильно понял - вы пользуетесь jQuery - в ней событие onchange называется просто change, то есть код должен быть примерно таким
$('select.kuk').change(function(){alert('xxx'); });

bublik 27.06.2010 18:45

Цитата:

Сообщение от Starkua (Сообщение 61317)
Если я правильно понял - вы пользуетесь jQuery - в ней событие onchange называется просто change, то есть код должен быть примерно таким
$('select.kuk').change(function(){alert('xxx'); });

Вы правы, jQuery.
Спасибо за подсказку насчет change.
Исправил-
$('select.kuk').change(function(){alert('xxx'); });


Для появления на экране сообщения 'xxx' достаточно изменять
выбор в списке или еще необходим вызов change в коде?

Starkua 27.06.2010 18:49

Цитата:

Сообщение от bublik
Для появления на экране сообщения 'xxx' достаточно изменять
выбор в списке или еще необходим вызов change в коде?

Обработчик вызывается при любом изменении опций, или вручную или программно.

bublik 27.06.2010 18:55

Цитата:

Сообщение от Starkua (Сообщение 61338)
Обработчик вызывается при любом изменении опций, или вручную или программно.

При ручном изменении в выпадающем списке сообщений нет.
Сообщение появляется один раз при загрузке страницы.

bublik 27.06.2010 18:57

Ошибся, сообщений вообще нет.

bublik 27.06.2010 20:53

Сообщения появляются только при изменении с клавиатуры,
при изменении мышкой- сообщений нет.

Starkua 27.06.2010 21:21

Цитата:

Сообщение от bublik
Сообщения появляются только при изменении с клавиатуры,
при изменении мышкой- сообщений нет.

Значит гдето есть ошибка, проверяйте пошагово, все ли колбеки вызываются. change() работает как надо, проверено множество раз на работающих проектах. Почитайте доку по нему, может помочь http://api.jquery.com/change/

bublik 27.06.2010 21:29

Цитата:

Сообщение от Starkua (Сообщение 61351)
Значит гдето есть ошибка, проверяйте пошагово, все ли колбеки вызываются. change() работает как надо, проверено множество раз на работающих проектах. Почитайте доку по нему, может помочь http://api.jquery.com/change/

Не знаю, как отладить.
Если отключить javascript- для стандартного <select> change
работает как надо.
Если навешиваю javascript + jquery и добавляю ul-li список
картинок, change перестает работать с мышки.

Starkua 27.06.2010 21:31

Цитата:

Сообщение от bublik
Не знаю, как отладить.
Если отключить javascript- для стандартного <select> change
работает как надо.
Если навешиваю javascript + jquery и добавляю ul-li список
картинок, change перестает работать с мышки.

Посмотреть на проблемку в деле можно?


Часовой пояс GMT +3, время: 22:00.