我試圖檢測「選擇列表」中的「更改」事件,就像從「鼠標單擊」或從「標籤按下(即焦點丟失)「。此後,我想根據這兩項行動做不同的事情。從選擇列表中檢測「更改」事件 - 從鼠標單擊或按鍵中輸入
在深度,如下:
我有一個錶行一個「選擇列表」。每當用戶從該列表中選擇一個項目時,一些控件(輸入,選擇等等)動態加載到緊鄰的下一個表格行內的所述「選擇列表」下方。
我想從這裏得到的是,如果用戶通過鍵盤從「選擇列表」中選擇了一些項目並按下標籤,則焦點應自動轉移到動態呈現的第一個控件。同樣,如果用戶使用鼠標從「選擇列表」中選擇一個項目,焦點不應該移動到任何地方。
下面是我的代碼來實現相同的:
$("#mySelectList").bind("change", function (e) {
var selList = $(this);
$.post("/someController/someAction", { paramOne: $(this).val() }, function (result) {
// ..... //
// consume "result" and load dynamic controls underneath the "select list"
selList.closest('tr').next().find("input, select:first-child").focus(); // set focus to the next immediate control
}, 'json');
});
從上面的,一切工作正常,而使用「標籤」,但如果用戶使用鼠標選擇時,焦點仍然移動到下一個動態控制這是不好的。如果用戶使用鼠標選擇一個項目,我只想保持焦點只在「選擇列表」上。
我也嘗試使用「keyup」來代替「更改」,但導致「選擇列表」,以便通過控件導航時使用「選項卡選項卡」選項卡或者在使用「選項卡選項卡選項卡」時發出不必要的ajax請求方面問題的ajax請求「製表符移動+製表符選項卡等」。
請讓我知道如果你們知道更好的方法來實現這種情況。我也期待在每個現有瀏覽器下運行一個可能的解決方案。
期待您的回覆。
在此先感謝。
'blur'?如果有人按下標籤,焦點應自動從元素中移除。如果用戶點擊,焦點停留。因此,要檢測「標籤按」,「模糊」似乎是要走的路。 –
@Felix:謝謝你的回覆。 '模糊'似乎是一種方式。但不幸的是,'模糊'抑制了'變化'事件,最終也終止了任何Ajax請求。請任何其他想法? – Gurdeep
在那裏,我想,必須有助於區分變化行爲是來自「點擊鼠標」還是來自「失去焦點」。任何人? – Gurdeep