Dün bir similar question numaralı telefonu yanıtladım. Karakterle ilgili herhangi bir şey için keypress
olayını kullanmanız gerektiğini unutmayın; keydown
yapmaz.
Bu arada, Girin yazılabilir olduğunu iddia edebilirim, bu arada, ve bu işlev olduğunu düşünür. Eğer kabul etmiyorsanız, Neyse ki 13.
function isCharacterKeyPress(evt) {
if (typeof evt.which == "undefined") {
// This is IE, which only fires keypress events for printable keys
return true;
} else if (typeof evt.which == "number" && evt.which > 0) {
// In other browsers except old versions of WebKit, evt.which is
// only greater than zero if the keypress is a printable key.
// We need to filter out backspace and ctrl/alt/meta key combinations
return !evt.ctrlKey && !evt.metaKey && !evt.altKey && evt.which != 8;
}
return false;
}
var input = document.getElementById("your_input_id");
input.onkeypress = function(evt) {
evt = evt || window.event;
if (isCharacterKeyPress(evt)) {
// Do your stuff here
alert("Character!");
}
});
MDN, standart olmayan ve uyumsuzluklar olabileceğinden, 'window.event 'özelliğini kullanmamamızı önerir ([link] (https://developer.mozilla.org/en-US/docs/Web/ API/Pencere/etkinlik). Bunun hakkında herhangi bir görüş var mı? – Segmentation
@ Bölümlendirme: Kesinlikle katılıyorum. Bunu sadece, şu an olduğundan daha fazla endişe duyulan IE <= 8 ile uyumluluk için kullanıyorum. 'window.event' sadece bu hatada eski IE'de kullanılacaktır, çünkü olay nesnesi tüm modern tarayıcılarda olay işleyicisine aktarılacaktır. –