背景: 我有一個文本。我在用戶輸入時捕獲Tab鍵事件,並且插入Tab字符(\ t)並阻止瀏覽器關注下一個輸入。 在Mac和PC上,這在所有瀏覽器上都沒有問題。IOS藍牙鍵盤 - 輸入 - 選項卡事件
問題: 當使用連接到iPad的藍牙鍵盤時,這不起作用。文檔註冊了tab鍵事件,但只要我專注於textarea,所有tab鍵事件都會被忽略並不會發送到瀏覽器。我也用文本輸入進行了測試,並看到相同的結果。
實施例:https://plnkr.co/edit/NQvxijj3ISZ0B48fSHvi?p=preview
簡單聽者:
$(function(){
$("body").bind("keydown",function(e){
$("#bodyLog").append($("<div/>").html(e.keyCode));
return e.preventDefault();
});
});
當你有選擇的體(不是TEXTAREA),tab鍵事件登記和數字9次出現。任何其他關鍵事件也會出現。
當你有選擇的文本區域,所有的keydown事件被登記在身體監聽器和監聽textarea的......除了tab鍵兩者。
如果任何人有一個解決方案,我將永遠感激。
編輯 我已經觀看了5位,然後轉換,爲製表符「固定」的問題。
我研究這個,只能推測,當集中在輸入/文本域iOS不希望釋放TAB鍵的控制。我曾嘗試訪問Google文檔等網站,看看它們是否已經繞過它,但它們強制您下載該應用程序,而不是允許您在iOS上的Safari內編輯文件。我猜這是因爲iOS想要完全控制Tab鍵。我在iOS上嘗試過Chrome,但功能相同,所以我會說這不是Safari問題,而是iOS問題。
一個可能的但未經測試的解決方法是將整個<div>
編碼爲textarea,然後用div替換textarea。由於tab鍵適用於所有其他元素,因此它在理論上應該可行,但它需要相當多的Javascript和CSS才能使元素像另一個元素一樣工作。
EDIT 2
我已經發現,使用選項+ Tab鍵可以讓Tab鍵在文字區域被捕獲。我不覺得這是令人滿意的。當我在普通鍵盤上輸入段落時,我不鍵入Option + Tab,我只是鍵入Tab。據我所知,無法在textarea中單獨捕獲Tab鍵。
按下iOS鍵盤上的OPT +選項卡是否與非儀器鍵盤上的選項卡執行相同的操作? –
您是否嘗試過使用http://dmauro.github.io/Keypress/? –
這太奇怪了。你認爲這與iOS Safari的怪異有關嗎? https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html –