Обработка клавиши ввода в текстовой области с использованием JavaScript - PullRequest
2 голосов
/ 22 августа 2011

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

<TextArea></TextArea>
<TextArea></TextArea>
<TextArea></TextArea>
<TextArea></TextArea>
<TextArea></TextArea>

при нажатии ввода в 1-й области текста, alert('Text Area 1 clicked');

при нажатии ввода на другой 4 области текста, alert ('Other Text Area's clicked');

Можно ли это сделать с помощью jquery.

Ответы [ 3 ]

7 голосов
/ 22 августа 2011

http://jsfiddle.net/26kN7/1/

$("textarea").keyup(function(e) {
   var code = e.keyCode ? e.keyCode : e.which;
   if (code == 13) {  // Enter keycode
     if($(this).hasClass("first")) {
        alert("first ta clicked");
     } else {
         alert("the other ta clicked");
     }
   }
});

в некоторых версиях FFX нажатие <Tab>, e. который не установлен (остается 0), но e.keyCode равен (9).

Вы также можете сократить это значение до

$("textarea").keyup(function(e){
    if((e.keyCode || e.which) == 13) { //Enter keycode
      if($(this).hasClass("first")) {
        alert("first ta clicked");
      } else {
        alert("the other ta clicked");
      }
    }
});

Еще одно замечание: мне нравится добавлять здесь класс, а не находить первую текстовую область, потому что это более общее решение и может удовлетворить любую текстовую область.

3 голосов
/ 22 августа 2011

Вы можете попробовать использовать:

$('textarea').keypress(
    function(e){
        if (e.keyCode == 13) {
            if ($(this).index() == 0) {
                // code for first textarea;
            }
            else {
                // code for others
            }
        }
    });

JS Fiddle demo .

1 голос
/ 22 августа 2011

Проверьте свойство which объекта события jQuery , чтобы определить, какая клавиша была нажата.

$('textarea').first().keypress(function (e)
{
    if (e.which === 13) alert('Text Area 1 enter key pressed');
}).nextAll().keypress(function (e)
{
    if (e.which === 13) alert('Other Text Area enter key pressed');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...