我想做的是,在填写四个字符时指向下一个选项卡。每个字段应有 4 个字符,完成后应移至下一个输入框。
$(".inputs").keyup(function () {
if (this.value.length == this.maxLength) {
$(this).next('.inputs').focus();
}
});
小提琴。
原文由 Prasanga 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想做的是,在填写四个字符时指向下一个选项卡。每个字段应有 4 个字符,完成后应移至下一个输入框。
$(".inputs").keyup(function () {
if (this.value.length == this.maxLength) {
$(this).next('.inputs').focus();
}
});
小提琴。
原文由 Prasanga 发布,翻译遵循 CC BY-SA 4.0 许可协议
也许您忽略了将您的代码封装在 DOM 中就绪。 Jsfiddle 将您的代码包含在 $(window).load(function() { .....})
中,这就是它工作的原因。所以在你自己的页面上使用:
$(function() {
$(".inputs").keyup(function () {
if (this.value.length == this.maxLength) {
$(this).next('.inputs').focus();
}
});
});
在 jsfiddle 中,您可以通过选择 No wrap - in <head>
确认,然后单击运行。该代码将不起作用。但是,如果您使用包含在 DOM ready 中的上述内容,它就可以工作。
原文由 PeterKA 发布,翻译遵循 CC BY-SA 3.0 许可协议
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
3 回答938 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
您的代码工作正常,但是您的输入元素设置为
type="number"
。非数字内容将被忽略,因此如果您输入“abcd”,例如,输入的value
为空(意味着length
的0
)。另一方面,如果您输入“1234”,则输入的值为1234
。如果您希望您的代码在输入非数字内容时触发,只需将每个输入的类型更改为
text
。JSFiddle 演示。
请注意,我还从该示例中的每个元素中删除了重复的
class
属性。正如 krish 在对您的问题的评论中提到的,您的代码存在一个问题,即最后一个
input
元素将继续接受超过 4 个字符。要解决此问题,请进行检查以确保存在next('.inputs')
元素:JSFiddle 演示。