我正在为我的公司创建一个小应用程序,它可以通过一系列交换机工作。例如,如果某些进入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类的函数(输出是一个正在附加的框,用于后向跟踪)
我的下一个目标是让对不起尝试其中一个"但它只适用于当前的开关。如果我要给每个开关一个默认值,它会进入下一个,所以它会列出"抱歉尝试其中一个"以前的所有案例。
希望这能解释得更好
答案 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>