Ввод символа табуляции в текстовых полях браузера

89

Часто, когда я хочу отформатировать текст в текстовом поле веб-страницы, я нажимаю Tabклавишу.

К сожалению, это не вставляет символ табуляции, но вместо этого перемещает элемент управления к следующему элементу формы (например, кнопка или флажок).

Для браузеров, таких как Firefox / IE, есть ли способ получить поведение форматирования вкладки в текстовом поле, набрав комбинацию клавиш?

Рохит
источник

Ответы:

9

Tabinta - это дополнение к Firefox, которое позволяет вам это делать.

инвертировать
источник
4
Любое решение для Chrome?
сорин
2
@SorinSbarnea: Смотрите мой ответ
Янус Троелсен
Это больше не совместимо с Firefox.
rory.ap
Это плагин, который работает в Firefox 64: addons.mozilla.org/en-US/firefox/addon/textarea-tabbing
Stefan_Fairphone
1
Этот плагин больше не существует (без вины ответа, прошло почти десять лет с тех пор, как на вопрос был дан ответ, и Firefox сильно изменился).
aoeu
63

В Windows вы можете нажать Alt+ 09. Это работает только с цифровыми клавишами цифровой клавиатуры. (Отпустите Altпосле нажатия последней цифровой клавиши.)

ta.speot.is
источник
4
Убедитесь, что вы используете клавиши NumPad
CatamountJack
@ Крис: Когда я следую этим точным инструкциям, он не вставляет символ табуляции, а действует как клавиша табуляции. Вы пробовали это в веб-браузере?
Casebash
@Casebash Это работает в этом самом окне комментариев, в Chrome, в Windows 7 x64.
Крис
2
Только если у вас есть Windows и клавиатура с цифровой клавиатурой.
Механическая улитка
1
... и если вы используете Chrome. FF видит это как клавишу табуляции, IE, похоже, ничего не делает. Снова +1 за напоминание об этом простом старом хаке :)
Halil Özgür
50

Linux и другие системы POSIX (кроме Mac OS):

Для ввода вкладок в приложениях GTK + (например, Firefox или Chrome):

  1. Ctrl+ Shift+U

  2. Тип 9

  3. Нажмите SpaceилиEnter

Источник: Википедия: Unicode Input

Янус Троелсен
источник
Это работает, но не полезно для отступа нескольких строк одновременно.
MYGz
13

В Safari и Firefox в Mac OS X вы можете нажать, ControlOptionTabчтобы вставить вкладку в текстовое поле, которое вы в данный момент редактируете.

Даниэль Бек
источник
7
Похоже, это не работает в Chrome 50 на El Cap
jcollum
1
Ни на Firefox 53 на Сьерра.
Джейсон Р. Кумбс
1
@ JasonR.Coombs По-прежнему работает в Safari, поэтому можно предположить, что что-то изменилось в Firefox за четыре года, прошедшие с того момента, как я написал этот ответ.
Даниэль Бек
9

Откройте Блокнот или аналогичный текстовый редактор и запустите новый пустой документ. Тип Tab. Скопируйте ваш символ табуляции в буфер обмена. (В Windows Ctrl+ A, Ctrl+ это Cбудет сделано).

Теперь вернитесь к текстовой области в вашем браузере. Поместите курсор туда, где вы хотите, и вставьте символ табуляции. ( Ctrl+ Vв Windows).

Вуаля, готово!

Doin
источник
1
Сиро, это сломано для обычных текстовых полей и полей ввода текста, или просто "contenteditable" элементов? Потому что если это просто проблема для «contenteditable», это может не повлиять на такое количество людей (например, на OP) ...
Doin
2
Это было самое простое решение, если вам не нужно делать это часто.
Jcollum
8

Существует плагин Chrome, который называется Textarea Code Formatter .

Это позволяет вставлять вкладки в текстовые поля в браузере Chrome. Это также позволяет выделять несколько строк и вставлять вкладки перед каждой выбранной строкой.

Однако проблема заключается в том, что часто требуется стандартное поведение вставки вкладок. Если вы используете вкладку для переключения между полями, то вы можете выбрать «отключен» по умолчанию в настройках.

Джером англим
источник
4

Если это ваш сайт:

Плагин jQuery: http://teddevito.com/demos/textarea.html

jQuery(document).ready(function () {

     $("textarea").tabby();

});

Сначала загрузите jQuery и плагин, затем вы можете сделать вкладку и сделать вкладку, а Shift + Tab как бы «untab».

Для поддержки всего браузера вам потребуется использовать расширение, пользовательский скрипт, плагин и т. Д., Например: 46704 для Greasemonkey .

Grizly
источник
Ссылка мертва. Что со всем этим JQuery? Должен быть способ принимать вкладки, используя простой JavaScript. Плагин jQuery всегда хорош для уже реализованного решения, но на самом деле это не решение.
Трийнко
Попробуйте этот шеф: stackoverflow.com/a/13130
Grizly
1

Большим преимуществом Tabinta в Firefox является то, что вы можете сопоставить символ табуляции с другой горячей клавишей, поскольку вы действительно не хотите терять поведение клавиши Tab по умолчанию в браузере.

С Internet Explorer у вас нет решения в отношении расширений браузера, о которых я знаю. Здесь единственный способ - сохранить символ табуляции в буфере обмена, предварительно скопировав его из какой-либо другой программы, например блокнота.

Решения javascript требуют названия текстового поля, в котором они будут действовать, так что это далеко от идеала или практичности. Хотя сочетания клавиш alt в обоих браузерах по-прежнему выполняют обычное событие нажатия символов табуляции, поэтому они также не работают.

Гном
источник
1

Я немного запутался с AutoHotkey, чтобы получить эту способность, и единственное «пуленепробиваемое» решение, которое я нашел, - это вставлять (а не отправлять) сам символ табуляции.

;
; TAB character
; pasted from clipboard
; win tab
;
#tab::
old_clip:=clipboard
clipboard:=A_Tab
clipWait
sendInput,^v
clipboard:=old_clip
clipWait
return

Оказывается, это связывание AHK даже полезно в текстовых редакторах, которые дополнительно обрабатывают нажатие клавиши TAB; например. IDE настроен на использование автоиндентирования по пробелам.

Myf
источник
0

Tab Grabber похож на Tabinta, только для Chrome (позволяет вкладки в полях textarea).

SiteKickr
источник
0

Чтобы ввести клавишу табуляции в текстовом поле, вы можете использовать такой скрипт (текстовое поле, которое принимает клавиши табуляции, называется txtLongText):

[VB.NET]

txtLongText.Attributes.Add("onkeydown", _
"if(event.which || event.keyCode){if ((event.which == 9)" & _ 
"|| (event.keyCode == 9)) {document.getElementById('" & _ 
txtLongText.ClientID + "').selection = " & _
document.selection.createRange();" & _ 
txtLongText.ClientID & ".selection.text = " & _
" String.fromCharCode(9);return false;}} else {return true}; ")

[C #]

txtLongText.Attributes.Add("onkeydown", 
"if(event.which || event.keyCode){if ((event.which == 9)" +
"|| (event.keyCode == 9)) {document.getElementById('"+
txtLongText.ClientID + "').selection = document.selection.createRange();" + 
txtLongText.ClientID + ".selection.text = String.fromCharCode(9);return false;}} else {return true}; ");

Или лучше, чтобы избежать жесткого кодирования, вы можете поместить этот код в функцию с именем EnableTabType. Функция имеет только один параметр, который указывает, что является TextBoxэлементом управления, где необходимо включить ввод символов табуляции.

[VB.NET]

Public Sub EnableTabType(tb As TextBox)
    tb.Attributes.Add("onkeydown", _
    "if(event.which || event.keyCode){if((event.which == 9)" & _ 
    "|| (event.keyCode == 9)) {document.getElementById('" & _ 
    tb.ClientID & "').selection=document.selection.createRange();" & _
    tb.ClientID & ".selection.text = " & _
    " String.fromCharCode(9);return false;}}else{return true};")
End Sub 

[C #]

public void EnableTabType(TextBox tb)
{ 
    tb.Attributes.Add("onkeydown", 
    "if(event.which || event.keyCode){if ((event.which == 9)" +
    "|| (event.keyCode == 9)) {document.getElementById('"+
    tb.ClientID + "').selection = document.selection.createRange();" +
    tb.ClientID + ".selection.text = String.fromCharCode(9);return false;}} else {return true}; ");
}

Источник: http://www.beansoftware.com/ASP.NET-Tutorials/Access-Tab-Key.aspx

admintech
источник
0

или используя ahk, чтобы вставить 4 * пробел в редакторе:

^Right::
tabspace:="    "
send,%tabspace%    
return 

Вы можете увидеть объяснение деталей кода в ахк коде

Лу Чжао
источник