我正在为我的公司创建一个小应用程序,它通过一系列交换机工作。例如,如果一些人在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;
};
}
});
};这只是一个更改了一些ids的小示例。
我的问题是,我需要在被使用后清除开关,直到再次被调用,因为问题是一旦函数运行,即使离开开关(案例等),它也是可用的,最重要的是,默认情况也会跳过数字。我需要缺省值来存储每个开关的自定义变量,这就是为什么我不希望它们在开关之间传递。
编辑-
开关上的case将附加到div或将您带到另一个函数。大约有15 - 20个功能使用开关相互连接,一些父母有几个孩子。
当你在INPUTBOX中输入一个值并按下enter,然后它会把你带到一个案例,在案例中,你将被带到另一个函数,它将有一个开关案例,或者输出到输出类(输出是一个框,它也被附加以用于回溯)
我的下一个目标是有一个“对不起,尝试其中之一”,但它只适用于当前的交换机。如果我给每个开关一个默认值,它会带到下一个开关上,所以它会列出“对不起,尝试这些中的一个”,适用于所有前面的情况。
希望本文能更好地解释这一点。
发布于 2017-03-22 00:46:14
我添加了一个重构并修复了我认为你想要做的事情的例子。请参阅代码片段中的注释。
/**
* 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>
https://stackoverflow.com/questions/42933040
复制相似问题