Javascript jQuery会自动移动到下一个具有最大到达值的输入
我想用最后一个值移动到下一个输入。例如,我想输入信用卡号码,每个号码的最大容量为4位,如果数字超过4位,那么它将自动移动到下一个输入,最后添加值 例如,我想添加12345,所以这里1234将添加到第一个输入,5将自动移动到下一个输入Javascript jQuery会自动移动到下一个具有最大到达值的输入,javascript,jquery,Javascript,Jquery,我想用最后一个值移动到下一个输入。例如,我想输入信用卡号码,每个号码的最大容量为4位,如果数字超过4位,那么它将自动移动到下一个输入,最后添加值 例如,我想添加12345,所以这里1234将添加到第一个输入,5将自动移动到下一个输入 1234 5 我试过使用下面的方法,自动移动到下一个字段是工作,但不移动最后一个值 $("#card3").bind("keypress", function (e) { var error = [];
1234 5
我试过使用下面的方法,自动移动到下一个字段是工作,但不移动最后一个值
$("#card3").bind("keypress", function (e) {
var error = [];
var card3 =$("#card3").val();
if ( card3.length > 3 ) {
error.push('<p>Allow digits only(0 - 4).</p>');
if (this.value.length == this.maxLength) {
$('#card4').focus();
}
}
$(“#card3”).bind(“按键”,功能(e){
var错误=[];
var card3=$(“#card3”).val();
如果(card3.length>3){
错误。推送(“只允许数字(0-4)。”;
如果(this.value.length==this.maxLength){
$('#card4').focus();
}
}
我将添加12345,以便5自动移动到下一个输入。这里就是问题所在
1234 5
if (this.value.length == this.maxLength) {
$('#card4').focus();
}
this.maxLength
返回未定义,因此该块永远不会运行。
试一试
您可能希望从输入属性添加和检索maxLength值
<input data-max-length="4" />
if (this.value.length == $(this).data('max-length')) {
$('#card4').focus();
}
如果(this.value.length==$(this.data('max-length')){
$('#card4').focus();
}
修改复制以处理粘贴
如果您不需要处理粘贴,则dupe将为您工作,因为您无法在“最大值”之后输入没有数字的数字到下一个字段
通过在第一个字段中粘贴16位数字或一次键入一位数字来测试以下内容
$(“[data max]”).eq(0).on(“输入”,函数(){
const val=this.value;
如果(val.length==16){
const re=new RegExp(`.{${4}}`,“g”)
常量块=val.match(re)
chunks.forEach((chunk,i)=>$(“[data max]”).eq(i).val(chunk))
}
})
$(“[data max]”)在(“输入”,函数()上{
如果(this.value.length>=this.dataset.max){
如果(this.nextElementSibling)this.nextElementSibling.focus();
}
})
$(“[data max]”。最后一个()。在(“输入”,函数()上){
this.value=this.value.slice(0,4)
})
[数据最大值]{
宽度:50px;
}
有什么问题或疑问?您可以阅读关键码并将其转换为数字(减去48)@ikiK,我想如果任何一个类型的数字(如12345),那么5号将自动移动到下一个字段,当前只有焦点工作,但值不会移动到下一个字段