如何强制循环等待,直到用户按下提交按钮
How to force loop to wait until user press submit button?
我有一个简单的函数,检查输入的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:谢谢你的练习和你在那里做的漂亮的自动。
相关文章:
- 如何在用户提交表单之前访问text_field的内容
- 如何在同一页面上显示用户提交的数据
- 如何在用户提交后退按钮时重新加载同一页面
- 如何在用户提交链接时添加提取推文并将其发布到站点的功能
- 如何在节点的沙盒环境中执行用户提交的javascript代码
- 用户提交表单时按钮发生更改
- 在用户提交表单后显示数据(从API调用检索),而不刷新页面
- 是否可以在没有用户提交表单的情况下保存表单数据
- 在用户提交之前隐藏 HTML 元素
- 通过按回车键阻止用户提交表单
- 更改用户提交的背景
- 用户提交位置后,重新居中谷歌地图
- 为什么缩进从我的网站上的用户提交中消失
- 当用户提交时,将一个输入值传递给输入类型隐藏值
- PHP如何在用户提交表单时更新文本
- 如何在用户提交每个新帖子时给它们加上时间戳(并将其保存在Firebase中)
- 当用户提交PHP表单时,我如何将文本文件发送到网站上所有打开的浏览器
- 嵌入来自用户提交的URL的内容
- IE9提示用户提交隐藏的iFrame
- 在用户提交结果时,将日期和时间保存到访问文件中