Jquery - 将开关盒切换到开关盒 - 清除开关盒

时间:2017-03-21 16:32:18

标签: javascript jquery switch-statement

我正在为我的公司创建一个小应用程序,它可以通过一系列交换机工作。例如,如果某些进入Hi,它将把它们带到hi函数,并且在该函数内是更多的开关。以下示例:

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中输入一个值并按下回车键时,它将转到其中一个案例,在这种情况下,您将被带到另一个具有开关案例或输出到OUTPUT类的函数(输出是一个正在附加的框,用于后向跟踪)

我的下一个目标是让对不起尝试其中一个"但它只适用于当前的开关。如果我要给每个开关一个默认值,它会进入下一个,所以它会列出"抱歉尝试其中一个"以前的所有案例。

希望这能解释得更好

1 个答案:

答案 0 :(得分: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>