2012-03-18 4 views
0

Это проблема: мне нужно, чтобы перехватить обугленные @, но с JQuery и KeyDown случае я получаю только код 17.KeyDown события: проблемы с «@»

Как я могу получить реальный код (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). Как я могу решить эту проблему?

+0

Что вы пытаетесь accomplis? Это поле ввода? – elclanrs

+0

Потому что вы предупреждаете (блокируете) на 'keydown', и поэтому вы не будете регистрировать второй ключ. – Ben

+0

Да, он подключен к полю ввода. но я не знаю, как перехватить ключ, мне нужно «@» ... – fpiliego

ответ

0

Это работает для меня: 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, ключ и ключ .

+0

Я нахожусь на mac, и я использую alt + 2. – joakimdahlstrom

+0

Я тестировал это с моим mac, он работает так же. Думаю, я не использую alt – shanabus

0

Я не знаю, что 192 идентификатор, но я обнаружил, что @ является NR 64.

Вы можете захватить, что с нажатием клавиши события, как,

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

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

}); 
Смежные вопросы