首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery -切换到Switch Case -清除Switch Case

Jquery -切换到Switch Case -清除Switch Case
EN

Stack Overflow用户
提问于 2017-03-22 00:32:18
回答 1查看 651关注 0票数 0

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

代码语言:javascript
复制
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;
          };
        }
    });
};

这只是一个更改了一些ids的小示例。

我的问题是,我需要在被使用后清除开关,直到再次被调用,因为问题是一旦函数运行,即使离开开关(案例等),它也是可用的,最重要的是,默认情况也会跳过数字。我需要缺省值来存储每个开关的自定义变量,这就是为什么我不希望它们在开关之间传递。

编辑-

开关上的case将附加到div或将您带到另一个函数。大约有15 - 20个功能使用开关相互连接,一些父母有几个孩子。

当你在INPUTBOX中输入一个值并按下enter,然后它会把你带到一个案例,在案例中,你将被带到另一个函数,它将有一个开关案例,或者输出到输出类(输出是一个框,它也被附加以用于回溯)

我的下一个目标是有一个“对不起,尝试其中之一”,但它只适用于当前的交换机。如果我给每个开关一个默认值,它会带到下一个开关上,所以它会列出“对不起,尝试这些中的一个”,适用于所有前面的情况。

希望本文能更好地解释这一点。

EN

回答 1

Stack Overflow用户

发布于 2017-03-22 00:46:14

我添加了一个重构并修复了我认为你想要做的事情的例子。请参阅代码片段中的注释。

代码语言:javascript
复制
/**
 * 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();
代码语言:javascript
复制
<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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42933040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档