Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перехват TAB, ctrl+s
 
 автор: DJ Paltus   (13.03.2009 в 15:48)   письмо автору
 
 

Возможно ли сделать перехват зарезервированных системой клавиш и сочетаний?
Я бы хотел, чтобы в поле textarea при нажатии клавиши табуляции происходило добавление соответствующего символа, а не перемещался фокус, а при нажатии ctrl+S (ctrl+Ы) происходила отправка формы.

  Ответить  
 
 автор: PAT   (13.03.2009 в 17:05)   письмо автору
 
   для: DJ Paltus   (13.03.2009 в 15:48)
 

Вполне возможно.

Только зачем?
Лишать пользователя возможности использования привычных ему действий - признак ОЧЕНЬ плохого тона.

  Ответить  
 
 автор: DJ Paltus   (14.03.2009 в 00:26)   письмо автору
 
   для: PAT   (13.03.2009 в 17:05)
 

Здесь речь идет не о пользователе сайта, а об администраторе CMS.
Нужно забить кучу инфы (вытянутой из очень разных источников) в базу движка сайта, при этом ее текстово структурировать по мере надобности, и плюс иметь возможность быстрой отправки данных одним нажатием.
Если что, автор цмс - я, и я же буду в ближайшее время начинять это дело инфой. И у меня рефлексы опережают мышление, я жму ктрл+ы постоянно вместо того, чтобы взять в руки мышь и ткнуть в submit (или tab а за ним пробел).

И я буду очень благодарен, если Вы будете столь любезны и милостиво опишете мне процедуру перехвата кейпресса, конечно, если я в достаточной мере удовлетворил Ваше любопытство и рассеял все сомнения в целесообразности моей просьбы о помощи. :)

Искренне Ваш
DJ Paltus

  Ответить  
 
 автор: PAT   (14.03.2009 в 13:00)   письмо автору
 
   для: DJ Paltus   (14.03.2009 в 00:26)
 

>"у меня рефлексы опережают мышление"

Бывает.

Если задача у вас для единственного клиента, то не были бы вы столь любезны указать - какой именно браузер этот самый клиент пользует?
Дело в том, что отмена дефолтных значений/действий в разных браузерах решается по-разному.
Полагаю, что нет смысла программировать для всех возможных, когда явно используется всего один.

PS. C новомодными Safari и Chrome помочь не смогу, ибо их не пользую и потому не знаю.

  Ответить  
 
 автор: ddhvvn   (14.03.2009 в 19:45)   письмо автору
 
   для: PAT   (14.03.2009 в 13:00)
 

ммм... а что разве с "return ..." не прокатит?

  Ответить  
 
 автор: DJ Paltus   (15.03.2009 в 16:53)   письмо автору
 
   для: PAT   (14.03.2009 в 13:00)
 

ого. Я думал, йаваскрипт на всех один...
Ну я использую обычно FF3, но иногда приходится на 6-м ИЕ сидеть.

  Ответить  
 
 автор: ddhvvn   (15.03.2009 в 17:10)   письмо автору
 
   для: DJ Paltus   (15.03.2009 в 16:53)
 

грубо говоря один, но браузеры его понимают "неодинаково"

  Ответить  
 
 автор: DJ Paltus   (16.03.2009 в 10:46)   письмо автору
 
   для: PAT   (14.03.2009 в 13:00)
 

дык как?

  Ответить  
 
 автор: PAT   (16.03.2009 в 12:06)   письмо автору
 
   для: 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-го Лиса напишу из дома - на работе этой версии не установлено.

  Ответить  
 
 автор: DJ Paltus   (16.03.2009 в 12:19)   письмо автору
 
   для: PAT   (16.03.2009 в 12:06)
 

Ага. Спасибо. Теперь вижу, что от идеи с табуляцией лучше отказаться, так как заставить ее срабатывать посреди текста малой кровью не получится, доставляется только в конец.
в ФФ работать отказалось, ага.

  Ответить  
 
 автор: PAT   (16.03.2009 в 12:55)   письмо автору
 
   для: 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-й версии тоже всё будет работать, но надо проверять.

  Ответить  
 
 автор: DJ Paltus   (16.03.2009 в 13:11)   письмо автору
 
   для: PAT   (16.03.2009 в 12:55)
 

И вправду удобнее стало. Спасибо еще раз.

  Ответить  
 
 автор: PAT   (17.03.2009 в 00:49)   письмо автору
 
   для: 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>

  Ответить  
 
 автор: DJ Paltus   (17.03.2009 в 11:05)   письмо автору
 
   для: PAT   (17.03.2009 в 00:49)
 

Работает. Спасибо за помощь! )))
Над будет только исключить срабатывание табуляции при нажатии ctrl+tab (переключение между вкладками), причем на alt+tab все тихо.

  Ответить  
 
 автор: PAT   (17.03.2009 в 13:07)   письмо автору
 
   для: DJ Paltus   (17.03.2009 в 11:05)
 

>"Над будет только исключить срабатывание табуляции при нажатии ctrl+tab (переключение между вкладками)"

Не проблема:
найдите в коде строку if (y.keyCode == 9)

и замените её на строку if (y.keyCode == 9 && !y.ctrlKey)

  Ответить  
 
 автор: DJ Paltus   (17.03.2009 в 14:16)   письмо автору
 
   для: PAT   (17.03.2009 в 13:07)
 

Дык а я уже так и сделал. )

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования