Как сделать, чтобы событие select .change не срабатывало до тех пор, пока оно не потеряет фокус (желательно с использованием jquery)? - PullRequest
4 голосов
/ 12 февраля 2010

У меня есть поле выбора с помощью плагина jquery dropdownchecklist. Я хочу, чтобы событие изменения срабатывало только после того, как окно выбора теряет фокус.

Событие jquery .change запускается для полей выбора сразу после выбора элемента в списке. В моем случае, так как можно выбрать несколько элементов, я хочу, чтобы изменение срабатывало только после потери фокуса при условии, что новые элементы были даже выбраны.

Я думал, что мог бы создать какую-то цепочку, такую ​​как $ ('# MySelect'). Change (). Blur (...) или что-то в этом роде, но я не мог заставить его работать Я ожидаю.

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 12 февраля 2010

Может быть, вы хотите просто предоставить обработчик для события размытия и вообще игнорировать событие изменения. Затем вам придется отслеживать изменения самостоятельно. Одно из предложений заключается в том, чтобы событие изменения просто обновляло переменную, которая сообщает вам, что изменения произошли без каких-либо других действий. Тогда событие размытия может сделать это:

 $('#yourselect').blur(function(){
     if(changesOccurred){
        //do something about it
        changeOccurred = false;
     }

 });


 $('#yourselect').change(function(){
     changeOccurred = true;
});
1 голос
/ 12 февраля 2010

Вы должны быть в состоянии сделать это.

$('select').focus(function() {
    $(this).data( 'startValue', $(this).val() );
}

$('select').change(function(event) {
    event.preventDefault();
});

$('select').blur(function() {
    if ( $(this).data('startValue') == $(this).val() ) {
        //nothing has changed
    } else {
        //something's different
    }
}
0 голосов
/ 12 февраля 2010

Ну, а событие change наступает при изменении выпадающего списка. Вы не можете изменить это (какое забавное предложение в этом контексте).
Вы должны настроить свой код так, чтобы все ваши функциональные возможности, которые обычно должны выполняться на change, выполнялись на событии blur.

Обновление: Если вы предоставите некоторый код и объяснение, что и когда должно выполняться, вам будет легче помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...