Мне нужно определить, нажал ли пользователь клавишу точки на цифровой клавиатуре. Я написал это первый проект, который работает для меня:Определить десятичную (точную) клавишу с цифровой клавиатуры
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript"><!--
(function($){
var knownCodes = [
[110, 46], // Firefox, IE, Chrome
[78, 46] // Opera
];
var pressedCodes = [null, null];
$.fn.comma = function(){
this.live("keydown", function(e){
pressedCodes = [e.which, null];
}).live("keypress", function(e){
pressedCodes[1] = e.which;
for(var i=0, len=knownCodes.length; i<len; i++){
if(pressedCodes[0]==knownCodes[i][0] && pressedCodes[1]==knownCodes[i][1]){
$("#log").append("<li>Decimal key detected</li>");
break;
}
}
});
return this;
};
$(function(){
$('<ol id="log"></ol>').appendTo("body");
});
})(jQuery);
jQuery(function($){
$(".comma input:text, .comma textarea").css("border", "1px solid black").comma();
});
//--></script>
</head>
<body>
<form action="" method="get" class="comma" size="20">
<p><input type="text"></p>
<p><textarea rows="3" cols="30"></textarea></p>
</form>
</body>
</html>
Однако, я могу только проверить его в окне Windows XP с испанской клавиатурой. Мои вопросы:
Безопасно ли читать с
e.which
? Я использую его, потому что обаe.keyCode
иe.charCode
возвращаютundefined
хотя бы в одном браузере.Описывает ли операционная система эти цифровые коды каким-либо образом или это только материал браузера?
Эти коды зависят от раскладки клавиатуры?
Справочная информация: Я не мог найти плагин JQuery для remap numeric keypad поэтому я пишу сам.
Обновление
Я объясню, в чем я нуждаюсь. Испанские клавиатуры, имеющие цифровую клавиатуру, имеют ключ .
. Однако десятичный разделитель на испанском языке - ,
. Это вызывает раздражение для ввода чисел в веб-приложениях. Некоторые настольные приложения, такие как MS Excel, переназначают этот ключ, чтобы он вставлял запятую. Я пытаюсь имитировать это.
Я адаптировал небольшой скрипт, который я использовал, чтобы опубликовать его здесь. Вот как я получил значение для knownCodes массивов:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript"><!--
(function($){
$.fn.showKeyCodes = function(){
var log = function(e){
$("<li></li>").text(e.type + "(): [keyCode, charCode, which]=[" + e.keyCode + ", " + e.charCode + ", " + e.which + "]").appendTo("#log");
}
this.live("keydown", function(e){
log(e);
}).live("keypress", function(e){
log(e);
}).live("keyup", function(e){
log(e);
});
return this;
};
$(function(){
$('<ol id="log"></ol>').appendTo("body");
});
})(jQuery);
jQuery(function($){
$(".showKeyCodes input:text, .showKeyCodes textarea").css("border", "1px solid black").showKeyCodes();
});
//--></script>
</head>
<body>
<form action="" method="get" class="showKeyCodes" size="20">
<p><input type="text"></p>
<p><textarea rows="3" cols="30"></textarea></p>
</form>
</body>
</html>
Тип .
ключа в цифровой клавиатуре (или любой другой ключ заменяет его в раскладке клавиатуры) и ключ, который соответствует одному и тому же характеру в алфавитных клавиатурах , Цель состоит в том, чтобы обнаружить, что вы нажали первую, а не вторую.
Примечания стороны: я надеюсь, что вы не требуете этого ключа, чтобы делать вещи, так как моя клавиатура не имеет цифровая клавиатура :) http://www.apple.com/keyboard/ –
Я хочу, чтобы она вставляла кому, которая является допустимым десятичным разделителем на испанском языке. Если у вас нет клавиатуры, у вас нет проблемы, которую я пытаюсь исправить :) –