2012-03-30 25 views
1

我想允許在我的textarea中使用文字TAB\t)字符。但是,密鑰循環到下一個表單元素。既然這是預期的,我不想打破這個標準。同樣,CTRL + TAB週期瀏覽器選項卡。是否有一個推薦的組合鍵,讓人們在textarea中輸入實際的TAB使用Javascript將製表符添加到textarea

例如,CTRL + SPACE似乎沒有做任何事情,可以使用?

另外,我將如何正確聽這些組合?

+0

你試過這個嗎? https://github.com/jeresig/jquery.hotkeys但嚴重的是,作爲一個用戶,我會發現這種行爲超級煩人。此行爲在文本區域中不是「預期的」。 – 2012-03-30 21:59:44

+0

@KenThompson,就是這一點。我想找到一個不會影響用戶的未使用組合,只在需要時才提供其他功能。 – Xeoncross 2012-03-30 22:02:54

+1

用戶將點擊TAB鍵,並期望它在文本區域中輸入一個或多個選項卡。如果這就是你想要實現的,那麼你不需要插件。你只需要防止傳播。只是谷歌「允許在文本區域選項卡」,你會發現你的答案。你的問題聽起來像你試圖讓TAB轉到另一個元素......並要求用戶不喜歡這個來使用(和記憶)不同的組合。這是我會覺得煩人的。 – 2012-03-30 22:07:28

回答

10

這是我使用的文字區域,以保持TAB從焦點切換代碼:

$("textarea").keydown(function(e) { 
    var $this, end, start; 
    if (e.keyCode === 9) { 
    start = this.selectionStart; 
    end = this.selectionEnd; 
    $this = $(this); 
    $this.val($this.val().substring(0, start) + "\t" + $this.val().substring(end)); 
    this.selectionStart = this.selectionEnd = start + 1; 
    return false; 
    } 
}); 
+0

嗨,肯湯普森,你能解釋一下什麼是'this.selectionStart;和this.selectionEnd;'??我對這個說法有點困惑。 – 2015-06-13 08:44:36

+0

它基本上標識了光標位置(假設沒有實際選擇)。請參閱https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement – 2015-06-15 16:42:32

0

我已經使用Tabby jquery插件將此功能添加到文本區域,工作正常!

Tabby

有了它,你可以使用Tab鍵在文本區域中插入選項卡。儘管你確實丟失了標籤更改元素的功能。

+0

謝謝,但我不想打破標籤功能。我需要一個可以使用的替代鍵組合。 – Xeoncross 2012-03-30 22:05:34

1

你可以

  1. 使用說4位模仿的標籤。
  2. 讓用戶輸入「\ t」字符並將其視爲要解析的標記標記。
1

Tab Override(我自己的項目)啓用了textareas中的選項卡功能,並且還允許使用自定義組合鍵。這樣,Tab鍵可以繼續正常使用。

相關問題