javascript - widgets - web ui framework




Захват клавиши TAB в текстовом поле (4)

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

Есть ли какой-нибудь JavaScript, который будет захватывать клавишу Tab в текстовом поле, прежде чем она всплывет в пользовательский интерфейс?

Я понимаю, что некоторые браузеры (например, FireFox) могут не допустить этого. Как насчет пользовательских комбинаций клавиш, таких как Shift + Tab или Ctrl + Q ?


В Chrome на Mac alt-tab вставляет символ табуляции в поле <textarea> .

Вот один из них: Ви!


Предыдущий ответ хороший, но я один из тех, кто категорически против смешивания поведения с презентацией (вставляя JavaScript в мой HTML), поэтому я предпочитаю размещать логику обработки событий в моих файлах JavaScript. Кроме того, не все браузеры реализуют событие (или e) одинаково. Вы можете выполнить проверку перед запуском любой логики:

document.onkeydown = TabExample;

function TabExample(evt) {
  var evt = (evt) ? evt : ((event) ? event : null);
  var tabKey = 9;
  if(evt.keyCode == tabKey) {
    // do work
  }
}

Я бы предпочел отступ с табуляцией не работать, чем разрыв табуляции между элементами формы.

Если вы хотите сделать отступ, чтобы ввести код в поле Markdown, используйте Ctrl + K (или ⌘K на Mac).

С точки зрения фактической остановки действия, jQuery (который использует переполнение стека) остановит всплывающее событие, когда вы вернете false из обратного вызова события. Это облегчает работу с несколькими браузерами.


проблема в лучшем ответе от ScottKoon

вот

} else if(el.attachEvent ) {
    myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
}

Должно быть

} else if(myInput.attachEvent ) {
    myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
}

Из-за этого он не работал в IE. Надеемся, что ScottKoon обновит код





user-interface