如何跟蹤SELECT元素中的更改用戶使用鼠標或按Enter鍵選擇項目之前?SELECT onChange事件
可以收聽keyUp事件,該事件允許使用鍵盤跟蹤用戶在列表中的導航。但有沒有更通用的方法,它允許跟蹤列表「前期」的變化?
如何跟蹤SELECT元素中的更改用戶使用鼠標或按Enter鍵選擇項目之前?SELECT onChange事件
可以收聽keyUp事件,該事件允許使用鍵盤跟蹤用戶在列表中的導航。但有沒有更通用的方法,它允許跟蹤列表「前期」的變化?
Javascript支持'onbeforechange'事件,這可能會訣竅,但我不知道這是跨瀏覽器廣泛實施?如果支持的範圍足夠廣泛,請在更改之前存儲以前的值。否則,只需將原始值存儲在隱藏字段或JS變量中。
需要參考。 Opera,IE,Chrome,Safari或Firefox都支持這個事件...... – 2012-03-21 12:32:57
IE(至少8+)支持它,我只用它在一個封閉的IE環境中,儘管我不需要看廣泛的實現。 – Purpletoucan 2012-03-21 12:44:26
我已經在IE6-9,FF 11,Chrome 17,Opera 11.61,Safari 5.1.2中測試過了,但是'onbeforechange'事件不存在**(測試過'.onbeforechange = ..','addEventListener '和'.attachEvent')。 – 2012-03-21 13:39:38
將鼠標移到選擇項上時不會發生事件。
如您所說,您可以跟蹤鼠標移動。但是,由於不同的瀏覽器以不同的方式呈現列表,這將是一項艱鉅的任務。
但是,您可以自己創建一個選擇框,而不使用本機選擇
,你必須創建一個函數這樣的例子: -
function example(){
jQuery('select#service_billing_state').change(function() {
//your code here
});
}
,你必須調用這個函數的onchange,的onblur, onkey,onfocus ...
我總是用focus click
這個聽衆。
$('select').bind('focus click',function(){
//IMACHANGINGMYOPTION!!!!!!!!!!
//var val=$(this).val();
});
以上應於變更事件之前被觸發:
$('select').change(function(){
//The option has been changed.
});
說明:每當用戶重點選擇,我們也得到了所選項目的價值,我們可以前的操縱它如果觸發,則爲onchange
事件。 click
偵聽器被添加,以防我們的選擇已被集中,並且用戶點擊它在他實際選擇一個選項並觸發更改之前展開。
這是使用的例子,讓我們跟蹤前值
你可以直到你重新載入頁面之前的值存儲在其中存在的局部javascript變量。 – slash197 2012-03-21 12:26:13