我在幾個div的HTML表單蔓延。我需要在用戶按下時,他們每個格中的第一個或最後一個元素上的Tab鍵就知道(這樣我就可以應用某些自定義選項卡功能)。對於div中的第一個元素,我正在尋找Tab + Shift;我只查找Tab的最後一個元素。元素可以是文本框,textareas,單選按鈕,選擇列表或複選框。檢測
什麼是檢測第一和最後一個元素的最有效方法是什麼?很高興使用jQuery解決方案。
謝謝。
我在幾個div的HTML表單蔓延。我需要在用戶按下時,他們每個格中的第一個或最後一個元素上的Tab鍵就知道(這樣我就可以應用某些自定義選項卡功能)。對於div中的第一個元素,我正在尋找Tab + Shift;我只查找Tab的最後一個元素。元素可以是文本框,textareas,單選按鈕,選擇列表或複選框。檢測
什麼是檢測第一和最後一個元素的最有效方法是什麼?很高興使用jQuery解決方案。
謝謝。
只要輸入真正的DIV的第一和最後一個孩子,下面將工作。否則,你需要對選擇有點棘手。
編輯:我對孩子爲了斷言似乎是不正確的。這應該適用於大多數情況。 末編輯
如果你希望它是具體到某些類型的輸入,或者被認爲是輸入,但並不是真正的input
元素的東西,選擇將需要一些小的調整。
演示
http://jsfiddle.net/JAAulde/tHkdz/
代碼
$('#myform')
.find('div input:first-child, div input:last-child')
.bind('keydown', function(e)
{
if(e.which === 9)
{
//custom code here
e.preventDefault();
}
});
太好了 - 謝謝。 – Journeyman
所以你想爲第一個和最後一個輸入使用相同的事件處理程序?看起來你只想在第一個輸入上處理SHIFT + TAB,並讓默認行爲接管TAB鍵。 – FishBasketGordo
你可以使用第一和最後一個子選擇:
var first = $("#form-name:first-child");
var last = $("#form-name:last-child");
您可以使用:first-child
和:last-child
選擇找到表單元素。然後,就可以把事件處理程序,並分別檢查SHIFT + TAB和TAB。
$('div input:first-child').keydown(function(event) {
if (event.which == 9 && event.shiftKey) { // Tab is keycode 9
// Do custom tab handling
}
});
$('div input:last-child').keydown(function(event) {
if (event.which == 9) {
// Do custom tab handling
}
});
那些不起作用。他們會在所有div中查找所有輸入,並僅返回總集合中的第一個或總集合中的最後一個。不是每個div的第一個和最後一個。 – JAAulde
哎呀。你是對的。我糾正了我的錯字。 – FishBasketGordo
聽起來像是你想擁有第一和最後一個元素上的卡包。
$('#form').find('input, textarea, select').first();
$('#form').find('input, textarea, select').first();
.keydown()
.focus()
編輯:選擇邏輯是錯誤的
如果你正在試圖做的一切都是向後/向前移動焦點到正確的輸入,你爲什麼不使用'的TabIndex '屬性而不是JS? –