Я хотел бы иметь возможность использовать < kbd> Tab ключ в текстовом окне к счету более чем четыре места. Путем это теперь, скачки клавиши TAB мой курсор к следующему входу.
Есть ли некоторый JavaScript, который захватит клавишу TAB в текстовом окне, прежде чем это будет пузыриться до UI?
Я понимаю, что некоторые браузеры (т.е. FireFox) могут не позволить это. Как насчет таможенной ключевой компании как < kbd> Shift + < kbd> Tab или < kbd> Ctrl + < kbd> Q?
Даже если Вы захватываете 'keydown'/'keyup' событие, те - единственные события, которые запускает клавиша TAB, Вам все еще нужен некоторый способ предотвратить действие по умолчанию, двигаясь в следующий пункт в заказе счета, от появления.
В Firefox Вы можете звонить 'preventDefault ()' метод на объекте событий переданный к Вашему обработчику событий. В IE Вы должны возвратиться ложный из ручки событий. Библиотека JQuery предоставляет 'preventDefault' метод на своем объекте событий, который работает в IE и И следующие.
<body>
<input type="text" id="myInput">
<script type="text/javascript">
var myInput = document.getElementById("myInput");
if(myInput.addEventListener ) {
myInput.addEventListener('keydown',this.keyHandler,false);
} else if(myInput.attachEvent ) {
myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
}
function keyHandler(e) {
var TABKEY = 9;
if(e.keyCode == TABKEY) {
this.value += " ";
if(e.preventDefault) {
e.preventDefault();
}
return false;
}
}
</script>
</body>
I' d скорее углубление счета не работают, чем ломка tabbing между пунктами формы.
Если Вы хотите заказать, чтобы вставить кодекс в коробке Скидки с цены, используйте < kbd> Ctrl + < kbd> K (или ⌘K на Mac).
С точки зрения фактической остановки действия jQuery (который использует Переполнение Стека) будет мешать событию пузыриться, когда Вы возвратитесь ложный из отзыва событий. Это делает жизнь легче для работы с несколькими браузерами.
Предыдущий ответ прекрасен, но I' m один из тех парней that' s твердо против смешивания поведения с представлением (помещающий 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
}
}
Я отговорил бы от изменения поведения по умолчанию ключа. Я делаю как можно больше, не трогая мышь, поэтому если Вы заставите мою клавишу TAB не переехать в следующую область на форме, то я буду очень ухудшен.
Горячая клавиша могла быть полезной однако, особенно с большими кодовыми блоками и вложением. Shift-TAB - плохой выбор, потому что это обычно берет меня к предыдущей области на форме. Возможно, новая кнопка на редакторе WMD, чтобы вставить кодовый СЧЕТ, с горячей клавишей, была бы возможна?
есть проблема в лучшем ответе, данном 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 */
}
Из-за этого это didn' t работают в IE. Надеясь, что ScottKoon обновит кодекс
В Хроме на Mac alt-tab вставляет характер счета в '< textarea>'; область.
Вот тот: . Крошечный!