2012-03-21 2 views
1

Как я могу отслеживать изменения в элементе SELECT. ПЕРЕД, ЧТО пользователь выбирает элемент с помощью мыши или нажатием Enter?SELECT onChange event

Можно прослушать событие keyUp, которое позволяет отслеживать пользователя, просматривающего список с помощью клавиатуры. Но существует ли более общий подход, который позволяет отслеживать списки «префинальные» изменения?

+0

Вы можете хранить предыдущие значения в локальной переменной Javascript, которая существует до тех пор, пока перезагрузите страницу. – slash197

ответ

0

Javascript поддерживает событие onbeforechange, которое, вероятно, сделает трюк, но я не знаю, насколько широко это реализовано в браузерах? Если это поддерживается достаточно широко, сохраните предыдущее значение до его изменения. В противном случае просто сохраните исходные значения в скрытых полях или переменных JS.

+1

Необходимые ссылки. Opera, IE, Chrome, Safari и Firefox поддерживают это событие ... –

+0

IE (по крайней мере, 8+) действительно поддерживает его, я использовал его только в закрытой среде IE, хотя мне не нужно было смотреть на широко распространенную реализацию , – Purpletoucan

+0

Я тестировал это в IE6-9, FF 11, Chrome 17, Opera 11.61, Safari 5.1.2, но там происходит событие 'onbeforechange' ** ** ** (проверено' .onbeforechange = .. ',' addEventListener 'и' .attachEvent'). –

0

Нет события, которое срабатывает при перемещении мыши над элементами выбора.

Вы можете, как вы сказали, отслеживать движение мыши. Но поскольку разные браузеры отображают списки по-разному, это будет непростой задачей.

вы можете, однако создать переключатель самостоятельно без использования родного выбрать

0

вы должны создать функцию как в этом примере: -

function example(){ 
jQuery('select#service_billing_state').change(function() { 
//your code here 
}); 
} 

и вы должны вызывать эту функцию в OnChange, ONBLUR, onkey, onfocus ...

2

Я всегда использую focus click слушатель для этого.

$('select').bind('focus click',function(){ 
//IMACHANGINGMYOPTION!!!!!!!!!! 
    //var val=$(this).val(); 
}); 

выше должен быть вызван до по изменению события:

$('select').change(function(){ 
//The option has been changed. 
}); 

Объяснение: всякий раз, когда пользователь фокусирует выбрать, мы получаем значение выбранного элемента, и мы можем управлять ею до onchange Событие при срабатывании. Слушатель click добавляется в случае, если наш выбор уже сфокусирован, а пользователь нажимает, чтобы развернуть его до того, как он действительно выберет опцию и вызывает изменение.

Это пример использования, что позволяет нам отслеживать предыдущее значение:

http://jsfiddle.net/SUKqS/8/