Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery会自动移动到下一个具有最大到达值的输入_Javascript_Jquery - Fatal编程技术网

Javascript jQuery会自动移动到下一个具有最大到达值的输入

Javascript jQuery会自动移动到下一个具有最大到达值的输入,javascript,jquery,Javascript,Jquery,我想用最后一个值移动到下一个输入。例如,我想输入信用卡号码,每个号码的最大容量为4位,如果数字超过4位,那么它将自动移动到下一个输入,最后添加值 例如,我想添加12345,所以这里1234将添加到第一个输入,5将自动移动到下一个输入 1234 5 我试过使用下面的方法,自动移动到下一个字段是工作,但不移动最后一个值 $("#card3").bind("keypress", function (e) { var error = [];

我想用最后一个值移动到下一个输入。例如,我想输入信用卡号码,每个号码的最大容量为4位,如果数字超过4位,那么它将自动移动到下一个输入,最后添加值

例如,我想添加12345,所以这里1234将添加到第一个输入,5将自动移动到下一个输入

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号将自动移动到下一个字段,当前只有焦点工作,但值不会移动到下一个字段