2017-03-12 14 views
1

私は入力ボックスに質問を入力するマジック8ボールアプリを作成しています。送信ボタンを押すと、見出しのデフォルトのhtmlテキストが回答に置き換えられます。同じ質問が連続して2回尋ねられた場合は、新しい回答を与える代わりに警告メッセージを表示したい。私はjQueryが新しく、最後に入力した値を格納する方法を理解できません。私は本当にいくつかの入力を感謝します。前もって感謝します。jQuery - ユーザーがテキスト入力で同じ値を2回続けて入力しないようにする

$(document).ready(function(){ 
    var questionValue; 
    $("#submit").click(function() { 
     //Make sure user doesn't ask same question twice in a row 
     if (questionValue != $("#submit").val()) { 

      //List of possible responses 
      var response = ["Ask again later…", "Yes", "No", "It appears so", "Reply is hazy, please try again", "Yes, definitely", "What is it you really want to know?", "Outlook is good", "My sources say no", "Signs point to yes", "Don't count on it", "Cannot predict now", "As I see it, yes", "Better not tell you now", "Concentrate and ask again"]; 

      //generate a random number between 0-14 
      var randomNumber = Math.floor(Math.random() * 15); 

      //Present random answer 
      $("#eightBallAnswer").text(response[randomNumber]); 
     } 
     else { 
      alert("Ask a different question"); 
     } 
     var questionValue = $("#submit").val(); 
    }); 
}); 
+0

ほんの少しのクリーンアップの方法によって: 'VARの乱数= Math.floor(Math.random()* response.length);';文字列の長さをハードコードしないでください。また、 'click()'関数の前に 'var response = [...]'を定義してください。それ以外の場合、毎回同じ配列を再定義しています。 – Manngo

答えて

2

それはその関数内のローカル変数を作成して、その値をクリックハンドラへの呼び出しの間に保持されていないので、あなたのクリックハンドラ関数の最後の行からvarを削除します。クリックハンドラの外側で宣言されたquestionValue変数を参照したいとします。

ので変更:

var questionValue = $("#submit").val(); 

を...へ:

questionValue = $("#submit").val(); 

編集:私はちょうどあなたが、ID submitと同じ要素を要素の値を取得していることに気づいたクリックハンドラがバインドされていますが、正しくはないようです。ボタンの値はクリック間で変化しません。あなたはHTMLを表示しないので、テキストボックスのIDは何か分かりませんが、ifの条件と表示された行のセレクタを再確認してください。

+0

うわー。ええ、私は今夜すべての種類の間違いをしています。私はあなたの徹底した編集に感謝します。なぜ私の人生は最後の1時間でとても難しかったのですか?あなたが言ったことはすべて、魅力のように働いた。ありがとうございました。 – thenomadicmann

0

イムそれは難しい(笑)私の変化を説明するために見つけること

$(document).ready(function(){ 
     var prevquestionValue=$("#input").val(); 
     $("#submit").click(function() { 
      //Make sure user doesn't ask same question twice in a row 
      if (prevquestionValue!= $("#input").val()) { 

       //List of possible responses 
       var response = ["Ask again later…", "Yes", "No", "It appears so", "Reply is hazy, please try again", "Yes, definitely", "What is it you really want to know?", "Outlook is good", "My sources say no", "Signs point to yes", "Don't count on it", "Cannot predict now", "As I see it, yes", "Better not tell you now", "Concentrate and ask again"]; 

       //generate a random number between 0-14 
       var randomNumber = Math.floor(Math.random() * 15); 

       //Present random answer 
       $("#eightBallAnswer").text(response[randomNumber]); 
      } 
      else { 
       alert("Ask a different question"); 
      } 
      prevquestionValue = $("#input").val(); 
     }); 
    }); 
関連する問題