|
|
|
| Возможно ли сделать перехват зарезервированных системой клавиш и сочетаний?
Я бы хотел, чтобы в поле textarea при нажатии клавиши табуляции происходило добавление соответствующего символа, а не перемещался фокус, а при нажатии ctrl+S (ctrl+Ы) происходила отправка формы. | |
|
|
|
|
|
|
|
для: DJ Paltus
(13.03.2009 в 15:48)
| | Вполне возможно.
Только зачем?
Лишать пользователя возможности использования привычных ему действий - признак ОЧЕНЬ плохого тона. | |
|
|
|
|
|
|
|
для: PAT
(13.03.2009 в 17:05)
| | Здесь речь идет не о пользователе сайта, а об администраторе CMS.
Нужно забить кучу инфы (вытянутой из очень разных источников) в базу движка сайта, при этом ее текстово структурировать по мере надобности, и плюс иметь возможность быстрой отправки данных одним нажатием.
Если что, автор цмс - я, и я же буду в ближайшее время начинять это дело инфой. И у меня рефлексы опережают мышление, я жму ктрл+ы постоянно вместо того, чтобы взять в руки мышь и ткнуть в submit (или tab а за ним пробел).
И я буду очень благодарен, если Вы будете столь любезны и милостиво опишете мне процедуру перехвата кейпресса, конечно, если я в достаточной мере удовлетворил Ваше любопытство и рассеял все сомнения в целесообразности моей просьбы о помощи. :)
Искренне Ваш
DJ Paltus | |
|
|
|
|
|
|
|
для: DJ Paltus
(14.03.2009 в 00:26)
| | >"у меня рефлексы опережают мышление"
Бывает.
Если задача у вас для единственного клиента, то не были бы вы столь любезны указать - какой именно браузер этот самый клиент пользует?
Дело в том, что отмена дефолтных значений/действий в разных браузерах решается по-разному.
Полагаю, что нет смысла программировать для всех возможных, когда явно используется всего один.
PS. C новомодными Safari и Chrome помочь не смогу, ибо их не пользую и потому не знаю. | |
|
|
|
|
|
|
|
для: PAT
(14.03.2009 в 13:00)
| | ммм... а что разве с "return ..." не прокатит? | |
|
|
|
|
|
|
|
для: PAT
(14.03.2009 в 13:00)
| | ого. Я думал, йаваскрипт на всех один...
Ну я использую обычно FF3, но иногда приходится на 6-м ИЕ сидеть. | |
|
|
|
|
|
|
|
для: DJ Paltus
(15.03.2009 в 16:53)
| | грубо говоря один, но браузеры его понимают "неодинаково" | |
|
|
|
|
|
|
|
для: PAT
(14.03.2009 в 13:00)
| | дык как? | |
|
|
|
|
|
|
|
для: DJ Paltus
(16.03.2009 в 10:46)
| | Для MSIE (проверено в 6-й версии) будет работать следующее:
<textarea onkeydown="with (event) if (keyCode == 9) {this.value += '\t'; return false}; else if (ctrlKey && keyCode == 83) {this.form.submit (); return false}"></textarea>
|
А вот для 3-го Лиса напишу из дома - на работе этой версии не установлено. | |
|
|
|
|
|
|
|
для: PAT
(16.03.2009 в 12:06)
| | Ага. Спасибо. Теперь вижу, что от идеи с табуляцией лучше отказаться, так как заставить ее срабатывать посреди текста малой кровью не получится, доставляется только в конец.
в ФФ работать отказалось, ага. | |
|
|
|
|
|
|
|
для: DJ Paltus
(16.03.2009 в 12:19)
| | >вижу, что от идеи с табуляцией лучше отказаться, так как заставить ее срабатывать посреди текста малой кровью не получится, доставляется только в конец.
Вывод неверный.
Это у меня в коде поставлено в конец.
Вставить табуляцию там, где находится курсор, в MSIE очень просто, вот так:
<textarea onkeydown="with (event) if (keyCode == 9) {document.selection.createRange ().text = '\t' ; return false}; else if (ctrlKey && keyCode == 83) {this.form.submit (); return false}"></textarea>
|
В FireFox 2-й версии это тоже легко реализуется (но своим особым способом). Полагаю, что и для 3-й версии тоже всё будет работать, но надо проверять. | |
|
|
|
|
|
|
|
для: PAT
(16.03.2009 в 12:55)
| | И вправду удобнее стало. Спасибо еще раз. | |
|
|
|
|
|
|
|
для: DJ Paltus
(16.03.2009 в 13:11)
| | Проверено в MSIEv.6, в FFv.2 и в FFv.3:
<form>
...
<textarea onkeydown="return myFunc (event)"></textarea>
...
</form>
<script>
function myFunc (y)
{
var z = true, y = window.event || y, x = y.target || y.srcElement;
if (y.keyCode == 9)
{
z = false;
if (document.selection) document.selection.createRange ().text = '\t';
else with (x)
{
var w = selectionStart;
value = value.substring (0, w) + '\t' + value.substring (w, value.length);
selectionStart = selectionEnd = ++w;
}
}
if (y.keyCode == 83 && y.ctrlKey) {z = false; x.form.submit ()}
return z;
}
</script>
|
| |
|
|
|
|
|
|
|
для: PAT
(17.03.2009 в 00:49)
| | Работает. Спасибо за помощь! )))
Над будет только исключить срабатывание табуляции при нажатии ctrl+tab (переключение между вкладками), причем на alt+tab все тихо. | |
|
|
|
|
|
|
|
для: DJ Paltus
(17.03.2009 в 11:05)
| | >"Над будет только исключить срабатывание табуляции при нажатии ctrl+tab (переключение между вкладками)"
Не проблема:
найдите в коде строку if (y.keyCode == 9)
и замените её на строку if (y.keyCode == 9 && !y.ctrlKey)
|
| |
|
|
|
|
|
|
|
для: PAT
(17.03.2009 в 13:07)
| | Дык а я уже так и сделал. ) | |
|
|
|