2017-03-21 8 views
0

私はスイッチの範囲で動作する私の会社のための小さなアプリケーションを作成しています。例えば、ある人がHiに入ると、それはそれらをhi関数に持ち込み、その関数内ではより多くのスイッチになります。以下の例:Jquery - スイッチケースへのスイッチケース - クリアスイッチケース

var function = firstfunction { 

    $('#INPUTBOX').keypress(function (e) { 
     if (e.which == 13) { 
      switch($('#INPUTBOX').val().toLowerCase()){ 

      case "contact": 
      QuestionFunctionContact(); 
      break; 

      case "additional": 
      case "extra": 
      case "next": 
      MiscFunctionContact(); 
      break; 
      }; 
     } 
    }); 
}; 

var QuestionFunctionContact = function(){ 

    $('#INPUTBOX').keypress(function (e) { 
     if (e.which == 13) { 
      switch($('#INPUTBOX').val().toLowerCase()){ 

      case "address": 
      $('#OUTPUT').val("Here's Our Address"); 
      break; 

      case "email": 
      case "email address": 
      $('#OUTPUT').val("Here's Our Email"); 
      break; 

      case "phone": 
      case "number": 
      $('#OUTPUT').val("Here's Our Phone"); 
      Anotherfunction(); 
      break; 

      case "return": 
      firstfunction(); 
      break; 
      }; 
     } 
    }); 
}; 

これは、一部のIDが変更されたわずかな例です。

私の問題は、問題がスイッチを離した後でも使用できるようになった後に再び呼び出されるまで使用された後でスイッチをクリアする必要があります。数字を渡す。 各スイッチでカスタム変数を保存するためにデフォルトが必要です。なぜなら、スイッチ間でそれらを渡すことを望まないからです。

編集 - スイッチ上の

例はdiv要素に追加するか、別の関数に行くことができますどちらか。スイッチを使用してお互いに接続された約15〜20の機能があり、親の中には少数の子供がいる。

INPUTBOXに値を入力してEnterキーを押すと、いずれかのケースに移動します。ケース内では、スイッチケースを持つ別の機能に移るか、OUTPUTに出力しますクラス(出力はバックトラッキングのために追加されているボックスです)

私の次の目標は、「これらのうちの1つを試してみてください」ですが、現在のスイッチでのみ機能します。もし私が各スイッチにデフォルトを与えるならば、それは次のものに移ります。それで、これまでのすべてのケースで「これらのうちの1つを試してみてください」というリストが表示されます。これはそれを少し説明し

希望より良い

+0

コミュニティは、あなたがしようとしているものに理解できるように、このコードでフィドルを作成することはできますか? –

+0

アプリケーションは2400行のコードで、小さなバージョンを作成します – Ste

+0

短く - https://jsfiddle.net/qdu39xtp/3/デフォルトスティックはNO LUCK 1を意味し、NO LUCK 2はdivにも追加されます新しいスイッチで – Ste

答えて

0

私は私はあなたがやろうと考えるもののリファクタリングと固定された例を追加しました。スニペットのコメントをご覧ください。

/** 
 
* var function = firstfunction { will not work. 
 
* And, you need to call this function somewhere. I did so in the bottom. 
 
* Also this function must probably pass a value to your QuestionFunctionContact function. 
 
* I did this by providing the value to the function in the contact switch. 
 
*/ 
 
var firstfunction = function() { 
 

 
    $('#INPUTBOX').keypress(function (e) { 
 
     if (e.which == 13) { 
 
     
 
    var value = $('#INPUTBOX').val().toLowerCase(); // my general practice: use a value >=twice? store it to a variable 
 
     
 
      switch(value){ 
 

 
      case "contact": 
 
      QuestionFunctionContact(value); 
 
      break; 
 

 
      case "additional": 
 
      case "extra": 
 
      case "next": 
 
      //MiscFunctionContact(); // dont know what this does... 
 
      break; 
 
      }; 
 
     } 
 
    }); 
 
    
 
}; 
 
/** 
 
* This one was waiting for keypress again. 
 
* Does not make sense since its called by the firstfunction that already used all keyup events. 
 
* Make it receive a value instead of acting on events. 
 
*/ 
 
var QuestionFunctionContact = function(inputValue){ 
 
    
 
    var outputElem = $('#OUTPUT'); 
 

 
      switch(inputValue){ 
 

 
      case "contact": 
 
      case "address": 
 
      outputElem.html("Here's Our Address"); 
 
      break; 
 

 
      case "email": 
 
      case "email address": 
 
      outputElem.html("Here's Our Email"); 
 
      break; 
 

 
      case "phone": 
 
      case "number": 
 
      outputElem.html("Here's Our Phone"); 
 
      //Anotherfunction(); // dont know what this does... 
 
      break; 
 
       
 
      }; 
 
}; 
 
firstfunction();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="INPUTBOX"> 
 
<em>Type "contact" for example</em> 
 
<div id="OUTPUT"></div>

+0

こんにちは、MiscFunctionContact();私はそれを短縮しようとしていました。私はそれを少し説明するために投稿を編集する – Ste