我需要你的帮助,
javascript编码完美无缺地实现了预期的结果,但由于某种原因,它不允许数字键盘上的键输入到输入框中。大多数用户使用键盘上的numlock键输入数字。如何修改编码,以便键盘上单独的数字键盘上的按键能够正常工作?
<!DOCTYPE html>
<html>
<body>
<div>
<input type="text" id="rownum">
</div>
<script type="text/javascript">
document.getElementById('rownum').onkeydown = function(e) {
var key = (window.event) ? event.keyCode : event.which;
alert(key);
if (key == 8) { // Delete key
return
}
else {
if ( isNaN( String.fromCharCode(key) ) ) return false;
}
}
</script>
</body>
</html>
答案 0 :(得分:0)
数字键盘中的数字具有不同的键码。其他键如删除在普通键盘和数字键盘中具有相同的keyCode,但keyCode 8(代码中的键码)用于退格,而不是删除。
答案 1 :(得分:0)
示例代码似乎无效。我运行它并得到'事件未定义'。此代码有效:
document.getElementById('rownum').onkeydown = function(e) {
var key = e.keyCode || e.which; // <-- updated reference to event
alert(key);
if (key == 8) { // Delete key
return
}
else {
if ( isNaN( String.fromCharCode(key) ) ) return false;
}
};
但正如@Portnoy所说,你可能需要处理不同的keyCodes。
答案 2 :(得分:0)
证明支持array.indexOf(数组):
Array.prototype.indexOf = function(obj, start) {
for (var i = (start || 0), j = this.length; i < j; i++) {
if (this[i] === obj) { return i; }
}
return -1;
}
然后您可以应用以下内容:
document.getElementById('rownum').onkeydown = function(e) {
var key = (window.event) ? event.keyCode : event.which;
var keys = [8,37,39,46,96,97,98,99,100,101,102,103,104,105]
var x = (keys.indexOf(key) > -1)
if (x != true) {
if (isNaN(String.fromCharCode(key))) { return false }
}
}