2012-03-21 156 views
1

如何跟蹤SELECT元素中的更改用戶使用鼠標或按Enter鍵選擇項目之前?SELECT onChange事件

可以收聽keyUp事件,該事件允許使用鍵盤跟蹤用戶在列表中的導航。但有沒有更通用的方法,它允許跟蹤列表「前期」的變化?

+0

你可以直到你重新載入頁面之前的值存儲在其中存在的局部javascript變量。 – slash197 2012-03-21 12:26:13

回答

0

Javascript支持'onbeforechange'事件,這可能會訣竅,但我不知道這是跨瀏覽器廣泛實施?如果支持的範圍足夠廣泛,請在更改之前存儲以前的值。否則,只需將原始值存儲在隱藏字段或JS變量中。

+1

需要參考。 Opera,IE,Chrome,Safari或Firefox都支持這個事件...... – 2012-03-21 12:32:57

+0

IE(至少8+)支持它,我只用它在一個封閉的IE環境中,儘管我不需要看廣泛的實現。 – Purpletoucan 2012-03-21 12:44:26

+0

我已經在IE6-9,FF 11,Chrome 17,Opera 11.61,Safari 5.1.2中測試過了,但是'onbeforechange'事件不存在**(測試過'.onbeforechange = ..','addEventListener '和'.attachEvent')。 – 2012-03-21 13:39:38

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/