if (this.value.length == this.maxLength) {
var $next = $(this).next('.inputs');
if ($next.length)
$(this).next('.inputs').focus();
else
$(this).blur();
}
function onchechnge(i){
var dom = document.getElementById("key"+i);
var ml = dom.maxLength;
var lg = dom.value.length;
if (lg >= ml) {
document.getElementById("key"+(i+1)).focus()
}
}
7条答案
按热度按时间5anewei61#
您的代码工作正常,但是您的输入元素被设置为
type="number"
。非数字内容将被忽略,因此如果输入“abcd”,例如,输入的value
为空(意味着0
的length
)。另一方面,如果输入“1234”,则输入的值为1234
。如果希望代码在输入非数字内容时触发,只需将每个输入的类型更改为
text
。字符串
JSFiddle demo的数据。
请注意,我还从该示例中的每个元素中删除了重复的
class
属性。正如krish在对你的问题的评论中提到的,你的代码有一个问题,最后一个
input
元素将继续接受超过4个字符。要解决这个问题,请进行检查以确保存在next('.inputs')
元素:型
JSFiddle demo。
ia2d9nvy2#
也许你忘了把你的代码封装在DOM中。Jsfiddle将您的代码封装在
$(window).load(function() { .....})
中,这就是它工作的原因。在你自己的页面上用途:字符串
在jsfiddle中,您可以通过选择
No wrap - in <head>
然后单击run来确认这一点。代码将不起作用。但是如果你使用上面的DOM ready,它就可以工作了。eiee3dmh3#
字符串
dw1jzc5e4#
这里是一个改进的版本,所有谁需要这对某种分裂的信息,如串行键或类似的东西:
个字符
s71maibg5#
我的第一个问题是,如果在已经填充的字段中进行制表,您必须手动选择每个字段。我的建议是:
字符串
第二个问题的解决方法让我很困惑。基本上,在先前已填充字段的相同情况下,如果键入太快,则事件将如下触发:按键向下按键向上按键向上
这会导致跳过下一个输入。
ecfdbz9o6#
对于那些谁尝试了公认的答案,但无法找到像我这样的解决方案
在您的布局页面或页眉,只需输入 AJAX 库链接(如下图所示)
它在我身上起作用了,希望它也能帮助你。
个字符
ctzwtxfj7#
我发现这段代码在honCode脚本中工作得很好,该脚本有多个序列号输入框。
纯JS:
字符串
超文本标记语言:
型