如何强制循环等待,直到用户按下提交按钮

How to force loop to wait until user press submit button?

本文关键字:用户 提交 按钮 何强制 循环 等待      更新时间:2023-09-26

我有一个简单的函数,检查输入的pin码是否有效。但是我不知道如何强制for循环等待,直到我再次输入代码再次检查它的有效性。
所以它应该如何-我键入PIN码,然后点击确定按钮,它检查它是否正确(如果是,我可以看到我的帐户菜单;如果不是,我必须再打一遍,我还有2次机会)。我的代码失败了,因为PIN当代码是错误的程序应该等到我输入新的代码和按OK键再次
我尝试了setTimeout(), callback(),但它不起作用。这就是我所拥有的-一个带有for循环的函数,它只运行3次(因为它应该是这样,但不是立即),而没有机会纠正PIN码。

完整,尚未完成,代码:http://jsfiddle.net/j1yz0zuj/

只有for循环函数,检查PIN码的有效性:

var submitKey = function(callback)
{
    console.log("digit status" + digitStatus);
    if (digitStatus == 0)
    {
        correctPIN = 1234;
        var onScreen = document.getElementById("screen");
        for (i=0; i<3; i++)
        {
            if (onScreen.innerHTML.slice(15, onScreen.innerHTML.length) == correctPIN)
            {
               setTimeout(accountMenu, 1250);
               //break;
            }
            else
            {
                onScreen.innerHTML += "<br> Błędny kod PIN! Wpisz PIN ponownie. <br> Pozostało prób: " + (2-i);
                callback();
                //cardInserted = function(function(){console.log("Ponowne wpisanie PINu");});
            }
            if (i=2) console.log("blokada");
        }
    }
    else if (digitStatus == 1)
    {
    }

}

你的方法不对。你不应该让用户等待!在程序的顶部还需要2个变量:pincount=0和pininputalallowed。将提交键函数中的pincount增加1,然后检查pincount<3.

这是你的代码的更正版本。

http://jsfiddle.net/kvsx0kkx/16/

var pinCount=0,
pinAllowed=true;

var submitKey = function()
{
    console.log("digit status" + digitStatus);
    if (digitStatus == 0)
    {
        correctPIN = 1234;
        var onScreen = document.getElementById("screen");
        pinCount++;
        if(pinCount >= 3) {
            pinAllowed = false;
            onScreen.innerHTML = "<br>blokada";
        }
        if(pinAllowed){
            if (onScreen.innerHTML.slice(15, onScreen.innerHTML.length) == correctPIN)
            {
               setTimeout(accountMenu, 1250);
               //break;
            }
            else
            {
                onScreen.innerHTML += "<br> Błędny kod PIN! Wpisz PIN ponownie. <br> Pozostało prób: " + (3-pinCount); 
                inputLength = 0;
                document.getElementById("screen").innerHTML += "<br>Wpisz kod PIN: ";
                //callback();
                //cardInserted = function(function(){console.log("Ponowne wpisanie PINu");});
            }
        }
    }
    else if (digitStatus == 1)
    {
    }

}

你需要创建更多的变量来控制你的机器。你的添加/删除数字函数的条件写得很糟糕,只有当屏幕上的文本足够短时才能工作。

var inputLength = 0;
addDigit = function(digit){
                //numKeyValue = numKeyValue instanceof MouseEvent ? this.value : numKeyValue;{
            if (inputLength < pinLength) {
                onScreen.innerHTML += this.value;
                inputLength++;
            }
            //if (onScreen.innerHTML == 1234) console.log("PIN został wprowadzony");
        },
delDigit = function(){
            if (inputLength >= 0) {
                onScreen.innerHTML = onScreen.innerHTML.slice(0, -1);
                inputLength--;
            }
        };

如果你想在任何时候清空屏幕,你可以在任何地方插入onScreen.innerHTML = '';ps:谢谢你的练习和你在那里做的漂亮的自动。