簡體   English   中英

當我在選擇中使用向上或向下箭頭時,為什么jquery不會更改事件?

[英]why doesn't the jquery change event fire when i use the up or down arrows on a select?

我正在使用jquery和livequery插件監聽選擇下拉列表的更改事件。

$(".myDropdown").livequery("change", function () {
});

我注意到的一件事(我使用的是firefox)就是這樣

當我選擇聚焦時,事件處理程序不會觸發向上和向下箭頭(向上和向下箭頭DO更改條目)

當我上下移動箭頭鍵時,為什么更改事件不會觸發?是否有推薦或解決方法?

如果Malvolio說的是真的那么,那應該有用

$(".myDropdown").livequery("change", function () {
   // your event handler
}).livequery("keypress", function() { 
   $(this).trigger("change");
});

http://jsfiddle.net/tW6Su/2/作為證明

我想我會總結一下。

如果單擊選擇框中的項目,則表示您正在更改它。 如果您通過鍵入向下瀏覽選擇框,則只有按Enter鍵才能選中,單擊關閉或標簽。 我認為這在瀏覽器與瀏覽器之間略有不同,但實際上選擇發生在類似“我已完全使用此表單字段並立即離開”事件。

如果您希望結果更直接,您可以觸發更改事件,如下所示:

$("select").live("keypress",function(){
    $(this).trigger("change");
});

如果您希望在所有表單字段上執行此操作,請嘗試以下選擇器: $(":input select textarea")

以下代碼(無論如何在Firefox 3.6上)同意OP並且不同意評論者:

$('body').append('<select/>').find('select')
    .append('<option>one</option)')
    .append('<option>two</option>')
$('body').find('select').keypress(function() { 
    console.log('keypress: ' + $(this).val()); })

只要按箭頭鍵,就會在日志中打印更改的值。

在元素失去焦點之前,更改事件不會被觸發,即使您正在更改值(正如Malvolio所證明的那樣)。 以下代碼片段將在按下任何鍵時手動觸發更改事件:

$("select").on("keypress",function(){
    $(this).trigger("change");
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM