Javascript -> Горячие клавиши -> Отключить для полей ввода - PullRequest
1 голос
/ 11 августа 2011

ладно, у меня работает горячая клавиша, просто не могу ее остановить

   $(document).keypress(function(e){

       if(e.which == 13){
      //Enter key is press do what you want
   }
   else if(e.which == 67 || e.which == 99){
      //C key is press do what you want

      window.location.href = "/html/credits.php";

   }
    else if(e.which == 32){
        alert("Space pressed");

    }

    });

     $("input.registerform").keypress(function(e){

     e.stopPropagation(); });

Вот что мне нужно, чтобы это прекратилось, класс моей формы ввода - «registerform bgcolor2», но он не будет работать ни с «input.registerform», ни с «input.registerform bgcolor2». с идентификатором registerform как ID тоже не работает: /

Это вызывает мой AJAX? или я что-то здесь упускаю?

(Извините, я сохранил это, только что создал новую учетную запись и не могу найти мой старый вопрос обратно.. <) </p>

Ответы [ 2 ]

2 голосов
/ 11 августа 2011

Я понимаю, что, поскольку вы присоединяете прослушиватель событий к объекту документа, все принимающие ввод элементы, такие как текстовые поля, выделения и т. Д., Будут обрабатывать горячие клавиши и, следовательно, теряют свое обычное поведение.

Взгляните на строку 44 в плагине jquery.hotkeys .Это исключает все входные принимающие элементы при инициализации.

PS Возможно, этот плагин в целом полезен для вашей задачи.

Ключ в том, чтобы проверить, происходит ли событие от ввода, принимающего текст.

# only bind event to text-accepting elements, if they have been
# explicitly selected
# if your event variable happens to be called e, please adjust accordingly
if ( this !== event.target && 
    ( /textarea|select/i.test( event.target.nodeName ) ||
      event.target.type === "text") ) {
    return;
}

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

0 голосов
/ 11 августа 2011

Кажется, работает просто отлично:)

пример: первый пример: http://jsfiddle.net/HenryGarle/SG5Um/ второй пример: http://jsfiddle.net/HenryGarle/SG5Um/1/

Новый код:

$(document).keypress(function(e){

   if(e.which == 13){
        alert("Enter");
   }
   else if(e.which == 67 || e.which == 99){
        alert("c");
       //window.location = 'whateveryouwant';
   }
    else if(e.which == 32){
        alert("Space pressed");
    }

});

$("input.registerform.bgcolor2").live('keypress', function(e){
    alert("Stopped");
    e.stopPropagation();
});

Stops:
<input class="registerform bgcolor2" type="text">
<br>
Does not stop:
<input class="registerform" type="text">

Использование этого что-либо с ONLY registerform будет работать как обычно, но если оно ТАКЖЕ имеет bgcolor2, оно остановит событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...