我有这个输入文字:
010 141 474 010 141 474
我想逐一按下上面提到的数字。我使用一个标志,一次只允许一个数字,但它不正确。在描述的代码中我可以按两个数字firt,但我想要第一个0,第二个,第三个等等......那么重复数字怎么样?我复制了代码?此外,我想检查一个按钮是否是onkeyup但没有。有帮助吗?提前致谢。我的代码:
function keyPressed(event){
var code;
var isKeyRepeating = false;
if(window.event){ //IE
code = event.keyCode;
}
else{ //other browsers
code = event.which;
}
if (code == 48 || code == 96){ //both keycodes for the same number
document.onkeypress("0");
isKeyRepeating = true;
}
if (code == 49 || code == 97){
document.onkeypress("1");
isKeyRepeating = true;
}
else {
event.preventDefault();
isKeyRepeating = false;
}
}
输入字段:
<input style="border-style: inset" size="90" type="text" name="key" id="txtboxToFilter" onkeypress="javascript:keyPressed(event);"/>
答案 0 :(得分:1)
你的问题最令人困惑。一次键入一个字符是完全无足轻重的,除非您特别想要防止按住键。因此,我不确定你甚至想要什么。
如果您希望用户只能以正确的顺序输入字符,这将对您有用:
<script type="text/javascript">
function keyPressed(event, input) {
if (event.keyCode == 8) {
// Allow backspace
return true;
}
// Detect character code: event.which on Firefox, event.keyCode on IE
var char = event.which ? event.which : event.keyCode;
// Convert to string
char = String.fromCharCode(char);
var match = 'aBÁ 010 141 474 010 141 474';
// Compare to character in match string and return result
return (match.charAt(input.value.length) == char);
}
</script>
<input size="30" type="text" name="key" id="txtboxToFilter" onkeypress="return keyPressed(event, this);"/>
还有另一个使用类似函数的答案,但关键的区别在于它使用onkeydown
处理程序,它会产生不同的结果。我们需要了解onkeydown
处理单个键,而onkeypress
处理单个字符键入。例如,如果您输入大写A
,则会有两个keydown
个事件:一个用于shift
,另一个用于a
。但是keypress
只有一个A
事件。
更重要的是,在使用onkeydown
时,不能指望所有密钥代码都与字符代码匹配。例如,如果从小键盘输入数字的键代码是不同的,并且特殊字符的键代码完全不可靠。但是,如果密钥代表可见字符,则使用onkeypress
,密钥代码将与字符代码匹配。
因此,使用onkeydown
或onkeypress
之间的决定因素是您是否希望检测任意按键或可见的键入字符。
(以下是原始答案的一部分,但事实证明这不是OP想要的,我将其留在这里作为参考)。
如果您希望用户只能输入数字,可以这样做:
<script type="text/javascript">
function keyPressed(event) {
var char = event.which ? event.which : event.keyCode;
char = String.fromCharCode(char);
var regexp = /\d/;
return regexp.test(char);
}
</script>
<input size="30" type="text" name="key" id="txtboxToFilter" onkeypress="return keyPressed(event);"/>
答案 1 :(得分:0)
如果我正确理解你。您希望某些用户逐个输入这些数字吗?因此,您需要将输入的键与整个字符串以及当前字符串进行比较,从prev构建。输入密钥。