为了提高我正在构建的信用卡表单的可用性,我希望一旦用户输入了 input
的 maxlength
属性中允许的字符,浏览器就会将焦点移动到下一个输入 .
我目前已经用三个输入字段完成了这个,但是以一种非常笨重,不可扩展的方式 . 见下面的代码 .
我想做的是编写以下内容:
如果具有autotab类的输入已达到maxlength,则将焦点移动到任何类的下一个最接近的输入 . 另外(我在下面的代码中还没有完成)如果具有类autotab的输入的值为空/ null,并且按下退格/删除键,焦点应该移动到任何类的前一个最接近的输入
我的目标是摆脱对特定字段编写变量的依赖,并稍微自动化这个过程 .
$( document ).ready(function() {
var CCCardFill = 0;
var CCExpMonthFill = 0;
var CCExpYearFill = 0;
var CCCardMax = 16;
var CCExpMonthMax = 2;
var CCExpYearMax = 4;
$( "input" ).keyup(function() {
var CCCardFill = $(".CCCard").val().length;
var CCExpMonthFill = $(".CCExpMonth").val().length;
var CCExpYearFill = $(".CCExpYear").val().length;
if (CCCardFill >= CCCardMax) {
$(".CCExpMonth").focus();
}
if (CCExpMonthFill >= CCExpMonthMax) {
$(".CCExpYear").focus();
}
if (CCExpYearFill >= CCExpYearMax) {
$(".CCName").focus();
}
});
});
5 回答
您可以使用
maxLength
和value.length
属性 . 当它达到最大长度时,您可以使用next().focus()
简单地聚焦下一个项目 .这是working JSFiddle demo .
如果
input
之间有其他HTML元素,您可以使用nextAll("input").first()
来获取 closest element matching the selector after this one :Another one JSFiddle Demo .
在您的情况下,您可以简单地做:
要替换
.focus()
项目 . 这将从您当前的元素移动到DOM中的下一个input
元素 .尝试获取attr maxlength并将其与val() . length进行比较,如果相等焦点下一个输入
以下是我将如何实现这一目标 . 每个元素使用onKeyup事件来调用autotab函数,发送自己的对象,然后关注以下元素的对象,然后测试maxlength .
您想查看触发事件的输入 . 事件处理程序中的
this
是想要的元素