Как я могу создать текстовое поле, которое позволяет пользователям вводить вкладки и не посылает пользователя к следующему элементу при нажатии кнопки табуляции?Вкладка в текстовых полях
ответ
Вам нужно всего лишь проверить наличие вкладок onkeydown
через event.keyCode === 9
. Вставка символа в текстовое поле нетривиальна - используйте библиотеку или google для «insertatcaret».
Вы можете использовать JavaScript, чтобы поймать событие нажатия клавиши tab и заменить его пробелами (я не уверен, что вставляю вкладки в текстовое поле).
E:This pageвыглядит хорошо.
onkeypress, onkeyup или onkeydown проверьте нажатой клавишу и, если она является вкладкой, добавьте \ t в текстовое поле и верните false, чтобы фокус остался в текстовом поле , вам, скорее всего, придется использовать текстовые диапазоны, чтобы вкладки может быть вставлен в любом месте, а не в конце текста . Это основная идея для остальных. Google является вашим другом :)
Кто сказал что-нибудь о jQuery? – UnkwnTech
Я что-то сказал о jQuery. Потому что: Почему не jQuery? Конечно, это немного преувеличено. Но, возможно, он хочет использовать его и для других вещей. И когда он использует Google API
@Unkwntech - нет необходимости изобретать велосипед. Указание существующего решения проблемы совершенно законно. Если вы сказали: «Я использую MooTools (или Prototype)», а затем указать, что решение jQuery может оказаться неприемлемым. – tvanfosson
<textarea onkeydown="return catchTab(this, event);">
JS код:
function setSelectionRange(input, selectionStart, selectionEnd) {
if (input.setSelectionRange) {
input.focus();
input.setSelectionRange(selectionStart, selectionEnd);
}
else if (input.createTextRange) {
var range = input.createTextRange();
range.collapse(true);
range.moveEnd('character', selectionEnd);
range.moveStart('character', selectionStart);
range.select();
}
}
function replaceSelection (input, replaceString) {
if (input.setSelectionRange) {
var selectionStart = input.selectionStart;
var selectionEnd = input.selectionEnd;
input.value = input.value.substring(0, selectionStart)+ replaceString + input.value.substring(selectionEnd);
if (selectionStart != selectionEnd){
setSelectionRange(input, selectionStart, selectionStart + replaceString.length);
} else{
setSelectionRange(input, selectionStart + replaceString.length, selectionStart + replaceString.length);
}
} else if (document.selection) {
var range = document.selection.createRange();
if (range.parentElement() == input) {
var isCollapsed = range.text == '';
range.text = replaceString;
if (!isCollapsed) {
range.moveStart('character', -replaceString.length);
range.select();
}
}
}
}
function catchTab(item,e){
if(navigator.userAgent.match("Gecko")){
c=e.which;
} else{
c=e.keyCode;
}
if(c==9){
replaceSelection(item, "\t");
setTimeout(function() { item.focus() } , 0);
return false;
}
}
ли НЕ попытку захватить OnKeyPress событие для ключа 'TAB' в IE (не работает) (bug 249)
Попробуйте onkeydown или onkeyup ins TEAD.
- 1. Апостроф в текстовых полях
- 2. transform.matrix на текстовых полях?
- 3. Показать значения в текстовых полях
- 4. Разрешить HTML в текстовых полях
- 5. Пользовательская проверка в текстовых полях
- 6. В .net хранить данные в текстовых полях
- 7. Отображение переменных в текстовых полях в JavaScript
- 8. Входные типы в текстовых полях в Затмении
- 9. проблема в текстовых полях в iphone sdk
- 10. Печать ArrayCollection в текстовых полях в ФЛЕКС
- 11. как выполнить проверку в текстовых полях
- 12. Результатов по раскрывающемуся в текстовых полях
- 13. «Операторы отношения не поддерживаются в текстовых полях»
- 14. Как выполнить несколько автозаполнений в текстовых полях?
- 15. C# подтверждение данных в нескольких текстовых полях?
- 16. Обновить фрагмент с изменениями в текстовых полях
- 17. номера Comapring в текстовых полях с AngularJS
- 18. XSS в текстовых полях - пример PHP
- 19. данных в текстовых полях не экономить
- 20. Теги шаблона в текстовых полях модели
- 21. DatePicker, отображающийся в нескольких текстовых полях
- 22. Математические вычисления в двух текстовых полях
- 23. Чтение текстовых файлов в полях ввода GUI
- 24. отображения данных в текстовых полях, используя доступ
- 25. Размещение абзацев в текстовых полях или наклейках
- 26. Используйте нелатинские алфавиты в динамических текстовых полях
- 27. Информация в текстовых полях не сохраняется. C
- 28. тип арабский шрифт в текстовых полях html
- 29. Даты настройки JavaScript в текстовых полях несовместимы
- 30. Выровнять текст в ярлыках и текстовых полях?
Meta-Filter работает снова, поэтому я отредактировал ваш ответ. – UnkwnTech