Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.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 处理enter keypress事件时接收两个enter_Javascript_Html - Fatal编程技术网

Javascript 处理enter keypress事件时接收两个enter

Javascript 处理enter keypress事件时接收两个enter,javascript,html,Javascript,Html,我试图根据一些规则将光标跳转到代码条上,或者手动将代码输入到下一个字段(下一个字段不一定是下一个顺序…) 按enter键可触发该功能(代码条的末端也为我提供了所需的enter键) 麻烦的是,当只提交一个回车键(一个手动键或一个带有代码条的键)时,该函数的工作原理就好像它在执行过程中得到了第二个回车键一样。。。 它将重新评估哪个输入处于活动状态。 我甚至插入了一些警告信息,并注意到它确实运行了两次 无法理解,我使用不同的方法从头重写了代码,但结果是一样的。同样的错误 我也尝试过e.preventd

我试图根据一些规则将光标跳转到代码条上,或者手动将代码输入到下一个字段(下一个字段不一定是下一个顺序…)

按enter键可触发该功能(代码条的末端也为我提供了所需的enter键)

麻烦的是,当只提交一个回车键(一个手动键或一个带有代码条的键)时,该函数的工作原理就好像它在执行过程中得到了第二个回车键一样。。。 它将重新评估哪个输入处于活动状态。 我甚至插入了一些警告信息,并注意到它确实运行了两次

无法理解,我使用不同的方法从头重写了代码,但结果是一样的。同样的错误

我也尝试过e.preventdefault(),但不是这样

以下是代码的两个版本:

$(document).keypress(function (e) {
    if (e.which == 13) {
        var focado = document.getElementById(document.activeElement.id);
        var fim = focado.id.substring(1);
        var inicio = focado.id.substring(0, 1);

        var anterior = inicio + (fim - 1);

        switch (fim) {
            case "1":
                fimseg = "2"
            case "2":
                fimseg = "3"
            case "3":
                fimseg = "4"
            case "4":
                fimseg = "5"
        }
                    var seguinte = inicio + (fimseg);

                    if (seguinte == "p5") {
                          seguinte = "a1";
                    }

        if (focado.value.length == 0) {

            if (fim != 1) {

                document.getElementById(focado.id).focus()
            } else {

                if (anterior.value.length == 0) {

                    document.getElementById(anterior).focus()
                } else {

                    if (seguinte == "a5") {

                        document.getElementById("btnSubmit").click();
                    } else {

                        document.getElementById(seguinte).focus()
                    }
                }
            }
        } else {

            if (focado.value.length < 7 || (isNaN(focado.value))) {

                document.getElementById(focado.id).innerHtml = "";
                if (anterior.value.length == 0) {

                    document.getElementById(anterior).focus()
                } else {

                    document.getElementById(focado).focus()
                }
            } else {

                if (fim != 1) { //não é p1 nem a1


                    if (anterior.value.length == 0) {

                        document.getElementById(anterior).focus()
                    } else {

                        if (seguinte == "a5") {

                            document.getElementById("btnSubmit").click();
                        } else {

                            document.getElementById(seguinte).focus()
                        }
                    }
                } else {


                    document.getElementById(seguinte).focus()
                }
            }
        }
    } //não é enter
}); //fim função
可能是用不同的键码或不同的事件处理程序捕获enter? 谢谢

更新:
输入框是:“p1”、“p2”、“p3”、“p4”、“a1”、“a2”、“a3”、“a4”,还有一个“btnSubmit”按钮

您可能会发现使用
键下键将更有效。它的设计只能发射一次<代码>按键可重复


另外,从您的问题中不确定,但是如果您有
$(document).keypress
在两个不同的位置,它应该同时运行这两个按钮。你确定它们没有相互干扰吗?

我的代码有一些错误

通过这种方式工作:

$(document).keypress(function (e) {
    if (e.which == 13) {
        var focado = document.getElementById(document.activeElement.id);
        var fim = focado.id.substring(1);
        var inicio = focado.id.substring(0, 1);
        var fimseg = fim;
        var anterior = inicio + (fim - 1);

        switch (fim) {
            case "1":
                fimseg = "2"
                break;
            case "2":
                fimseg = "3"
                break;
            case "3":
                fimseg = "4"
                break;
            case "4":
                fimseg = "5"
                break;
        }
        var seguinte = inicio + (fimseg);

        if (seguinte == "p5") {
            seguinte = "a1";
        }

        if (focado.value.length == 0) {

            if (fim != 1) {

                document.getElementById(focado.id).focus()
            } else {

                if (document.getElementById(anterior).value.length == 0) {

                    document.getElementById(anterior).focus()
                } else {

                    if (seguinte == "a5") {

                        document.getElementById("btnSubmit").click();
                    } else {

                        document.getElementById(seguinte).focus()
                    }
                }
            }
        } else {
                            if (focado.value.length < 7 || (isNaN(focado.value))) {

                document.getElementById(focado.id).innerHtml = "";
                if (anterior.value.length == 0) {

                    document.getElementById(anterior).focus()
                } else {

                    document.getElementById(focado.id).focus()
                }
            } else {

                if (fim != 1) { //não é p1 nem a1


                    if (document.getElementById(anterior).value.length ==0) {

                        document.getElementById(anterior).focus()
                    } else {

                        if (seguinte == "a5") {

                            document.getElementById("btnSubmit").click();
                        } else {

                            document.getElementById(seguinte).focus()

                        }
                    }
                } else {

                    document.getElementById(seguinte).focus()

                }
            }
        }
    } //não é enter
}); //fim função
$(文档)。按键(功能(e){
如果(e.which==13){
var focado=document.getElementById(document.activeElement.id);
var fim=focado.id.substring(1);
var inicio=focado.id.substring(0,1);
var fimseg=职能指令手册;
var=inicio+(职能指令手册-1);
交换机(fim){
案例“1”:
fimseg=“2”
打破
案例“2”:
fimseg=“3”
打破
案例“3”:
fimseg=“4”
打破
案例“4”:
fimseg=“5”
打破
}
var seguinte=inicio+(fimseg);
if(seguinte==“p5”){
seguinte=“a1”;
}
如果(focado.value.length==0){
如果(职能指令手册!=1){
document.getElementById(focado.id).focus()
}否则{
if(document.getElementById(前面的).value.length==0){
document.getElementById(前面的).focus()
}否则{
如果(分段==“a5”){
document.getElementById(“btnSubmit”)。单击();
}否则{
document.getElementById(seguinte.focus())
}
}
}
}否则{
if(focado.value.length<7 | |(isNaN(focado.value))){
document.getElementById(focado.id).innerHtml=“”;
如果(前面的值。长度==0){
document.getElementById(前面的).focus()
}否则{
document.getElementById(focado.id).focus()
}
}否则{
如果(fim!=1){//nãoép1 nem a1
if(document.getElementById(前面的).value.length==0){
document.getElementById(前面的).focus()
}否则{
如果(分段==“a5”){
document.getElementById(“btnSubmit”)。单击();
}否则{
document.getElementById(seguinte.focus())
}
}
}否则{
document.getElementById(seguinte.focus())
}
}
}
}//nãoéenter
}); //芬索

按下键后,问题仍然存在。只有一个代码。我发布了两个版本,它们都有相同的错误。当p1激活时触发enter时,它应该将焦点跳转到p2。然后,如果在p2中触发第二个enter且p2为空,则焦点应跳至a1。发生的情况是,代码根据p1中激发的enter正确运行,并将焦点放在p2上,但立即将焦点重新放在a1上,就像第二个enter被激发一样。在第二个代码中,它对第一个if求值为true,长度>=7,并将焦点标识为p1,重新聚焦于p2,但也在else语句中进行(
$(document).keypress(function (e) {
    if (e.which == 13) {
        var focado = document.getElementById(document.activeElement.id);
        var fim = focado.id.substring(1);
        var inicio = focado.id.substring(0, 1);
        var fimseg = fim;
        var anterior = inicio + (fim - 1);

        switch (fim) {
            case "1":
                fimseg = "2"
                break;
            case "2":
                fimseg = "3"
                break;
            case "3":
                fimseg = "4"
                break;
            case "4":
                fimseg = "5"
                break;
        }
        var seguinte = inicio + (fimseg);

        if (seguinte == "p5") {
            seguinte = "a1";
        }

        if (focado.value.length == 0) {

            if (fim != 1) {

                document.getElementById(focado.id).focus()
            } else {

                if (document.getElementById(anterior).value.length == 0) {

                    document.getElementById(anterior).focus()
                } else {

                    if (seguinte == "a5") {

                        document.getElementById("btnSubmit").click();
                    } else {

                        document.getElementById(seguinte).focus()
                    }
                }
            }
        } else {
                            if (focado.value.length < 7 || (isNaN(focado.value))) {

                document.getElementById(focado.id).innerHtml = "";
                if (anterior.value.length == 0) {

                    document.getElementById(anterior).focus()
                } else {

                    document.getElementById(focado.id).focus()
                }
            } else {

                if (fim != 1) { //não é p1 nem a1


                    if (document.getElementById(anterior).value.length ==0) {

                        document.getElementById(anterior).focus()
                    } else {

                        if (seguinte == "a5") {

                            document.getElementById("btnSubmit").click();
                        } else {

                            document.getElementById(seguinte).focus()

                        }
                    }
                } else {

                    document.getElementById(seguinte).focus()

                }
            }
        }
    } //não é enter
}); //fim função