如何使用JavaScript验证文本框中以问号结尾的文本?

如何使用JavaScript验证文本框中以问号结尾的文本?,javascript,jquery,Javascript,Jquery,我正在制作一个神奇的8球网页。用户在文本框中输入问题,单击按钮,将生成并显示随机响应。我有两个规定:如果同一个问题连续被问两次,我必须抛出一个警告框(已完成);如果问题没有以问号结束(中途),我必须抛出一个警告框。这是我的密码: $(document).ready(function() { var responses = []; responses[0] = "Ask again later..."; responses[1] = "Yes"; responses[2] = "N

我正在制作一个神奇的8球网页。用户在文本框中输入问题,单击按钮,将生成并显示随机响应。我有两个规定:如果同一个问题连续被问两次,我必须抛出一个警告框(已完成);如果问题没有以问号结束(中途),我必须抛出一个警告框。这是我的密码:

$(document).ready(function() {
  var responses = [];
  responses[0] = "Ask again later...";
  responses[1] = "Yes";
  responses[2] = "No";
  responses[3] = "It appears to be so";
  responses[4] = "Reply is hazy, please try again";
  responses[5] = "Yes, definitely";
  responses[6] = "What is it you really want to know?";
  responses[7] = "Outlook is good";
  responses[8] = "My sources say no";
  responses[9] = "Signs point to yes";
  responses[10] = "Don't count on it";
  responses[11] = "Cannot predict now";
  responses[12] = "As I see it, yes";
  responses[13] = "Better not tell you now";
  responses[14] = "Concentrate and ask again";
  var answer;
  var questionValue;    

  function getRandom(max) {
    return Math.floor(Math.random() * max);
  }

  $("input[type=button]").click(function() {
    if ("input[type=text]".substr(-1) != "?") {
      alert("Ask with a question mark at the end");
    } else if(questionValue != $("#txtQuestion").val()) {
      var my_num = getRandom(15);
      var answer = responses[my_num];
      $("#Response").text(answer);
    } else {
      alert("Ask a new question");
    }
    questionValue = $("#txtQuestion").val();
  });
});
在我检查问号之前,一切正常。如果我连续两次问同一个问题,它就会抛出一个警告框。但当我尝试在结尾处检查问号时,它只会抛出一个警告框,告诉我确保以问号结尾,即使结尾处有问号。我做错了什么

已使用HTML代码更新:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Magic 8 Ball</title>
    <link rel="stylesheet" href="styles.css">
  </head>
  <body>
    <div id="wrapper">
      <header>
        <h1>Magic 8 Ball</h1>
      </header>
      <h3>What would you like to know?</h3>
      <input type="text" name="txtQuestion" id="txtQuestion" />
      <br />
      <input type="button" id="btnAsk" value="Ask the 8 Ball" />
      <h3>The 8 Ball says:</h3>
      <h3 id="Response">Ask the 8 Ball a question...</h3>
    </div>
    <script src="scripts/jquery-3.2.1.js"></script>
    <script src="scripts/my_scripts.js"></script>
  </body>
</html>

魔术8球
魔术8球
你想知道什么?

8号球说: 问8号球一个问题。。。
您错过了对
$()
的呼叫。您忘记了使用jQuery来定位
“input[type=text]”
,而是在这个文本字符串上调用
.substr
<代码>“输入[类型=文本]”肯定不会以问号结束

--征求意见--

不知何故,上面的内容并不清楚,所以我将包括更多细节。在这一行代码中:

    if ("input[type=text]".substr(-1) != "?") {
您正在测试字符串
“input[type=text]”
是否以问号结尾。这永远不会是真的。但是,如果您要这样更改它:

    if ($('#txtQuestion').val().substr(-1) != "?") {

您现在正在测试问题字段的值是否以问号结尾,这在某些情况下可能是正确的。

也添加html代码。查看代码:
“input[type=text]”
是的,它应该说查看输入文本字段中的内容,然后转到字符串的末尾。如果没有问号,抛出警告框。但即使有一个问号,它也会。我能想到的唯一一件事是,它这样做是因为输入框是空的?我想我不太明白…我是否创建了一个变量来保存用户输入的内容,然后检查它,而不是输入[type=text]?@nponinski-Yep,这就是非常正确的。或者,如果确实不需要中间值,可以直接对
$('#txtQuestion').val()进行操作。但是调用
“input[type=text]”。substr(-1)
总是会返回
“]”
。我该如何直接这样做?我不能把这个带到工作中,我明白了!我没有把.substr放在.val()后面你是个救星!非常感谢你!