2010-06-30 4 views
1

키 탭 누름에서 실행되는 함수가 있습니다. javascipt 경고를 코드 사이에 넣을 때 작동합니다. 모든 종류의 경고, 중지 경고를 제거하면 작동합니다. 작업 : 당신이 alert()이 무엇을 당신의 코드를 중단 할 뭔가가 필요처럼 내 기능어디서나 자바 스크립트를 넣을 때 코드가 작동합니다

//Function to set the tab feture for focus to work properly on fields with autosuggestion(location and name) 
function setFocusOnTab(name) { 


    var focusElement = ""; 

    if(name == "name") {//For main contact field 

     if ($("#email").is(":visible")) { 
      $('#email').focus(); 
     } 
    } else if(name == 'location_name') {//For main contact field 
     $("#country").focus(); 
    } else {//For extra contact field 


     var outputDataCurrentVal = name.lastIndexOf('record_'); 


     if(outputDataCurrentVal < 0) { 

      //ADDTIONAL CONTACT TAB 
      var outputDataCurrentName = name.lastIndexOf('_name_'); 
      if(outputDataCurrentName >= 0) { 
       //Replacing the name to get location name. 
       locName = currentName.replace("_name_","_designation_"); 
       focusElement = locName; 
      } else { 

       var outputDataCurrentLoc = name.lastIndexOf('_location_'); 
       if(outputDataCurrentLoc >= 0) { 
        //Replacing the location name to get country name. 
        countryName = name.replace("_location_","_country_"); 
        focusElement = countryName; 
       } 
      } 

     } else { 


      //Extra CONTACT TAB 
      var outputDataCurrentName = name.lastIndexOf('_name_'); 
      if(outputDataCurrentName >= 0) { 
       //Replacing the name to get location name. 
       locName = currentName.replace("_name_","_location_"); 
       focusElement = locName; 
      } else { 

       var outputDataCurrentLoc = name.lastIndexOf('_location_'); 
       if(outputDataCurrentLoc >= 0) { 
        //Replacing the location name to get country name. 
        countryName = name.replace("_location_","_country_"); 
        focusElement = countryName; 

       } 
      } 
     } 



     $("#" + focusElement).focus(); 
     return false; 
    } 


} 
+0

작동하지 않는 것을 정의하십시오. 예외가 있습니까? 이상한 결과? 결과가 없습니까? – Gertjan

답변

3

는 소리.

대신 콜백이 필요할 수 있습니다. alert()으로 발생 될 수 무엇

+0

네, 그렇게 생각합니다. 나는 그 끝에 왜 false를 넣을까요.하지만 그건 효과가 없지만, false로 돌아가는 대신에주의를 기울이면 작동합니다. ......... 저에게 아주 starnge합니다. – Jos

+1

거짓 대신에? 그래서 거짓을 제거하고 경고를합니다. true를 반환하는 것은 옵션입니다. – Gertjan

+0

괜찮 았나? 곧 다시 만나 겠지만 감사합니다. :) – Jos

1

그것을 호출하면 (새로운 팝업 대화 상자에 포커스가 이동) 초점을 잃을 현재 창을 유발한다는 것입니다, 그리고 그것은 그것을 끝낸 후 창을 다시 초점을 맞추고 있습니다. 이렇게하면 스크립트를 혼동시킬 수있는 포커스 및 흐림 이벤트가 발생하고 Safari에서는 창이 다시 초점을 맞출 수 없습니다.

여기에 무슨 일을하고 있는지 분명하지 않습니다 ...이 코드를 탭 키 이벤트에 어떻게 첨부하고 있습니까? 어떤 이벤트가 return false;에 의해 취소되어야하나요? keypress을 사용하는 경우 Internet Explorer, Safari 또는 Chrome의 Tab 키가 호출되지 않습니다. keydown을 사용하는 경우 이벤트를 취소해도 Opera에서 탭을 방지 할 수 없습니다. 그리고 Shift-Tab은 어떨까요?

브라우저 키보드 동작 재현/변경은 입니다. 다른 방법이 없다면 훨씬 더 좋습니다. 드롭 다운 스 쳐져 작업과 같은 컨트롤을 만들려면 해당 요소에 선언문 tabIndex을 설정하고 브라우저에서 탭을 정렬하는 방법을 연습하도록하는 것이 훨씬 낫습니다.

0

이 게시물에 글을 써야합니다. 나는 많은 블로그와 게시물을 읽었지만 다른 곳에서 올바른 해결책을 얻을 수 없었다. 이 글에서도 더 자세하게 보았고 각각의 해결책을 시도했습니다.

마지막으로 bobince의 답을 읽으면 해결 방법을 알 수있었습니다. 필자는 필자가 다른 텍스트 상자 (필수 입력 아님)에 초점을 맞추었고 나중에 작업을 마칠 때 포커스를 원래의 텍스트 상자에 다시 설정했습니다. 따라서 더 많은 이야기는 실제로 경고로 끝난 현재 요소에서 다른 곳에 초점을 맞추기 만하면됩니다. 필자는 필수 요소가 아닌 요소에 초점을 맞추어이를 대체했습니다.

관련 문제