2017-03-21 1 views
0

스위치 범위에서 작동하는 회사 용 작은 앱을 만들고 있습니다. 예를 들어, 어떤 사람이 Hi에 들어가면 그 사람을 hi 기능으로 데려 가서 그 기능 내에서 더 많은 것을 스위치합니다. 아래 예는Jquery - Switch Case into Switch Case - Clear Switch Case

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가 변경된 작은 예일뿐입니다.

내 문제는 스위치를 벗어난 후에도 사용할 수있는 기능이 실행되면 다시 호출 될 때까지 사용 된 후에 스위치를 지워야한다는 것입니다 (가장 중요한 것은 기본 케이스입니다). 수치를 넘겨 라. 각 스위치와 함께 사용자 지정 변수를 저장하기 위해 기본 설정이 필요합니다. 따라서 스위치간에 스위치를 전달하지 않아야합니다.

편집 - 스위치에

사례가 사업부에 추가하거나 다른 기능으로 이동하게됩니다. 약 15 - 20 개의 기능이 스위치를 사용하여 서로 연결되어 있습니다. 부모 중 일부는 자녀가 몇 명 있습니다.

INPUTBOX에 값을 입력하고 Enter 키를 누르면 케이스 중 한 케이스로 이동합니다. 케이스 안에서 스위치 케이스가 있거나 다른 출력으로 OUTPUT으로 출력됩니다 클래스 (출력은 뒤로 추적하기 위해 추가되는 상자 임)

다음 목표는 "미안하지만 다음 중 하나를 시도하는 것"이지만 현재 스위치에서만 작동합니다. 각 스위치에 기본값을 지정하면 다음 스위치로 전달되므로 이전의 모든 경우에 대해 "미안 하나를 선택하십시오"라고 표시됩니다. 이 그것을 조금 설명

희망 나은

+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