Событие Keydown: проблемы с '@'

Вот в чем проблема: мне нужно перехватить char @, но с jQuery и событием keydown я получаю только код 17.

Как я могу получить настоящий код (192) с помощью property event.altKey = true?

Это мой код. Он связан с полем ввода:

$(this).keydown(function(e) {
   var keycode = (e.keyCode ? e.keyCode : e.which);

   alert(e.keyCode + " - " + e.which + " - alt:" + e.altKey + " - shift:" + e.shiftKey + " - ctrl:" + e.ctrlKey);
});

Это оповещение всегда показывает 17 (ctrl/alt). Как я могу решить эту проблему?


person fpiliego    schedule 18.03.2012    source источник
comment
Чего ты пытаешься добиться? Это поле ввода?   -  person elclanrs    schedule 19.03.2012
comment
Потому что вы предупреждаете (блокируете) keydown и поэтому не регистрируете второй ключ.   -  person Ben    schedule 19.03.2012
comment
да, это связано с полем ввода. но я не знаю, как перехватить ключ, который мне нужен '@'...   -  person fpiliego    schedule 19.03.2012


Ответы (2)


Я не знаю, что такое 192, но я обнаружил, что @ это номер 64.

Вы можете зафиксировать это с помощью события keypress, например,

$("#textfield").keypress(function(e) 

if (e.which == 64)
{
    console.log('you typed "@" symbol!');
} 

});
person joakimdahlstrom    schedule 19.03.2012

Это сработало для меня: http://jsbin.com/ohucuj/edit#preview

$(function() {
  $("#thingToTest").keydown(function(e) {
    var keycode = (e.keyCode ? e.keyCode : e.which);
    if (e.shiftKey && e.which == 50) {
      $("#message").html("You pressed SHIFT+2 or @ !!!"); 
    }else{
      $("#message").html(e.keyCode + " - " + e.which + " - alt:" + e.altKey + " - shift:" + e.shiftKey + " - ctrl:" + e.ctrlKey);
    }
  });
});

Просто проверьте клавиши Shift и 2.

person shanabus    schedule 19.03.2012
comment
Я на Mac и использую Alt + 2. - person joakimdahlstrom; 19.03.2012
comment
Я проверил это с моим Mac, он работает так же. Думаю, я не использую alt - person shanabus; 19.03.2012