我有一个程序,当你在前一个字段中输入允许的最大值后,它会跳到下一个字段。input maxlength属性对type=“number”不起作用。因此,我有一个JavaScript来确保maxlength被遵循,并且只允许数字。
<form action="myprogram.htm" method="post" name="myform">
<input type="number" size="5" maxlength="2" name="num1" onkeypress="return isNumberKey(event);" required>
<input type="number" size="5" maxlength="2" name="num2" onkeypress="return isNumberKey(event);" required>
<input type="number" size="5" maxlength="2" name="num3" onkeypress="return isNumberKey(event);" required>
</form>
<script type="text/javascript">
$("input").bind("input", function() {
var $this = $(this);
setTimeout(function() {
if ( $this.val().length >= parseInt($this.attr("maxlength"),10) )
$this.next("input").focus();
},0);
});
function isNumberKey(evt){
var charCode = (evt.which) ? evt.which : evt.keyCode
return !(charCode > 31 && (charCode < 48 || charCode > 57));
}
</script>
字符串
然而,有三个问题我似乎无法解决。
1.最大长度适用于前两个字段,num 1和num 2。但是第三个字段可以输入超过2!不知道为什么会发生这种情况。
1.如果这3个字段已经填好了,例如11,22,33。如果你移动到第一个字段并用数字555覆盖它,它会跳到第二个字段22,并在第二个字段的末尾添加第三个“5”。所以你最终会得到225。在这种情况下,JavaScript似乎无法强制执行maxlength。
1.当你点击第一个字段“11”并尝试使用上下箭头来增加或减少数字时。当你增加或减少第一个字段时,焦点/高亮跳转到下一个字段22。我知道第一个字段已经达到了2的最大长度,但我的光标仍然在第一个字段的箭头上。
有什么办法可以解决这些问题吗?先谢谢你了。
1条答案
按热度按时间mnemlml81#
下面是一个工作示例:
个字符
此代码片段将:
1.每次输入最多允许2个字符
1.当当前活动输入达到其字符容量时,将用户的焦点移动到下一个输入
1.使用输入的箭头调整值时不会移动用户的焦点
1.当箭头用于调整输入值时,
1.将允许用户在输入之间向前和向后跳
1.将允许用户删除输入中的值并输入新值
1.当焦点移到下一个输入时,将选择下一个输入中的值
1.经过测试,可在Firefox、Safari和Chrome上运行