【问题标题】:How to i make my prompt alert accordingly to if the user has answered what i've got pre typed in the prompt?如果用户已经回答了我在提示中预先输入的内容,我该如何做出相应的提示?
【发布时间】:2013-08-17 02:06:20
【问题描述】:

我想知道如何提醒“糟糕,您好像没有输入任何内容”,如果用户 输入“输入您的姓名”。我有一个 if 和 elseif 但我不知道 else 是否适用。这是我的代码

    <!DOCTYPE html>
    <html>
    <head>
    <title>Home</title>
    <link rel="stylesheet" type="text/css" href="style.css"/>
    </head>
    <body style="background-color: silver">
    <script>
        var name=prompt("Enter your name", "Enter your name")
        if (name !== '') {
            alert("Welcome" + " " + name)
        } else if(name !== false) {
            prompt("Oops, looks like you didn't enter anything");
        }
    </script>
    </body>
    <html>

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    此方法定义了一个函数 getName(),它采用与 prompt() 相同的参数。如果未指定默认值,则使用传递给它的问题。然后它使用这些值询问用户他们的名字。如果用户返回一个不满意的响应,即falsy (name === '', name === null, etc) 或等同于我们给他们的提示,我们会​​弹出一个带有错误消息的新提示,但是相同的默认消息。

    function getName(ques, def) {
      def = def || ques; // Make default param optional
      var name = prompt(ques, def);
    
      if (name && name !== '' && name != def) {
        return name;
      } else if(name !== false) {
        return getName("Oops, looks like you didn't enter anything", def);
      }
    };
    
    var name = getName("Enter your name");
    alert('Your name is: ' + name);
    

    演示:http://cdpn.io/rlJGj

    从用户体验的角度来看,请注意这一点。由于许多原因,它非常可怕。如果用户点击取消,这将提示他们,直到他们输入可接受的值并按确定。事实上,它并不能带来最好的用户体验,而且相当糟糕。

    【讨论】:

      【解决方案2】:
      <script>
      var name=prompt("Enter your name", "Enter your name")
      if (name!=='' && name!=='Enter your name') {
      alert("Welcome" + " " + name)
      } else if(name!==false) {
      prompt("Oops, looks like you didnt enter anything");
      }
      </script>
      

      Demo

      【讨论】:

        【解决方案3】:

        如果您查看JavaScript's prompt() method 的定义,您会看到第二个参数是在用户未输入任何内容时该方法应返回的默认文本。

        试试这个:

        var name = prompt("Enter your name");
        
        if (name === "") {
            prompt("Oops, looks like you didn't enter anything");
        } else if(name != null) {
            alert("Welcome" + " " + name);
        }
        

        希望这会有所帮助!现场演示here

        【讨论】:

        • 这实际上是最有意义的答案。如果提示已经说“输入您的姓名”,则无需设置默认值“输入您的姓名”
        【解决方案4】:

        else if(name !== false) 将永远是true

        因为 name 永远不会持有 true; ===doesn't do type conversion.

        所以稍微清理一下:

        var pHolder = "Enter your name"
        var name=prompt("Enter your name", pHolder )
        if(!name ||name == pHolder){
           alert("Oops, looks like you didnt enter anything");
        }
        else{
            alert("Welcome" + " " + name)
        }
        

        【讨论】:

          猜你喜欢
          • 2019-03-12
          • 2018-04-01
          • 1970-01-01
          • 2018-03-24
          • 2018-09-15
          • 2018-09-26
          • 1970-01-01
          • 1970-01-01
          • 2013-12-12
          相关资源
          最近更新 更多