输入不正确时反复显示提示

时间:2017-05-15 05:54:12

标签: javascript

我这里有一个提示,允许用户输入他/她的密码。我的问题是我希望它在用户输入不等于密码集时提示。这是我的代码。

    var padmin="hello";
    function myFunction(){
        var x= prompt("Input password for security purposes");
        if(x==padmin){
            return true;
        }else{
           return false;
        }
    }

    if(self.myFunction() == true){
        alert("password correct!");                
    }else{
        self.myFunction();
    }

请帮忙。谢谢。

3 个答案:

答案 0 :(得分:0)

您的代码在2个propmts之后退出的原因是因为您使用的是if...else。要以这种方式循环,您应该使用递归。

逻辑:

  • 打破3个部分的代码:
    1. 接受输入并验证相等
    2. 检查上述功能和过程终止条件的有效性。
    3. 成功时的业务逻辑(本例中为警告)。
  • 现在你只需要循环#2。

此外,x == padmin将返回布尔值。因此,如果您没有任何处理,只需使用return x === padmin

另请注意,在任何函数之外定义的任何变量都会成为全局范围的一部分,并且在全局范围内出现不良做法。将此变量移动到需要它的函数内。

function acceptPassword() {
  var padmin = "hello";
  var x = prompt("Input password for security purposes");
  return x === padmin;
}

function validate() {
  return acceptPassword() || validate();
}

function notify() {
  if (validate()) {
    alert("password is correct")
  }
}

notify();

答案 1 :(得分:0)

myFunction中使用简单。在myFunction中添加if和else语句,他们会提示,直到密码匹配

var padmin = "hello";

function myFunction() {
  var x = prompt("Input password for security purposes");
  if (x == padmin) {
   alert("password correct!");
  } else {
 myFunction();
  }
}

myFunction();

答案 2 :(得分:0)

有多种方法可以做到这一点。

使用无限循环,打破正确的密码。

var isPasswordCorrect = false;
var password = ''; 
while(!isPasswordCorrect){
   password = prompt(' Input password for security purposed '); 
   isPasswordCorrect = validatePassword(password);
   if(isPasswordCorrect)
       alert('password correct!');
}

function validatePassword (password){
   /*validation logic here, return true if password is correct,
     else return false 
   */
}

另一种方法是简单地进行递归调用:

function validatePassword(){
  var password = password = prompt(' Input password for security purposed ');

  var isPasswordCorrect;/*check password and store here*/
  if( isPasswordCorrect){
    return true;
  }else{
    return validatePassword();
  }

}