2012-04-02 6 views
1

사용자가 탭을 누른 다음 Enter 키를 눌러 시뮬레이션을하고 싶습니다. 이 나쁜 소리 알아,하지만 난 단지 사용자가 메인 폼을 제출 반환 얻을 안타 때 그래서 그것에 runat = "서버"와 하나의 양식을 가질 수 asp.net 웹 응용 프로그램이 있습니다. 페이지에 다른 텍스트 상자가 있는데 (이상적으로는 자신의 양식을 가져야하지만 ASP가 아니기 때문에 가능하지 않음) 입력 할 때 분명히 기본 양식이 제출됩니다. 내가 생각할 수있는 가장 간단한 방법은 탭을 시뮬레이션 한 다음 자바 스크립트를 사용하여 입력하는 것입니다.하지만 그 중 성공하지 못했습니다. 이 문제에 대한 다른 해결책을 환영합니다. 지금까지 나는 시뮬레이션 탭을 가지고 있지만 하나 이상의 키를 시뮬레이션하는 방법을 모르겠다.자바 스크립트에서 여러 번의 키 누르기 시뮬레이션

여기는 내가 지금까지 가지고있는 코드입니다. 저는 9 번째 리턴을 상상합니다. 다른 것으로 대체해야합니다. JQuery도이를 수행 할 것이다.

function suppressEnter (e) { 
    var keyPressed; 
    if (window.event) { keyPressed = window.event.keyCode } // IE 
    else if (e) { keyPressed = e.which }; // Netscape 
    if (keyPressed == 13) { 
     return 9; 
    } 
    else { 
     return true; 
    } 
} 

EDIT : return 9 + 13; 크롬에서 작동하지만,

는 이 같은
+1

'9 + 13를 반환;'22를 반환'말과 동일하다', 그것은 아무튼 어떻게 든 두 값을 모두 반환하지 않습니다 ... 사용자가 수동으로 탭을 누른 다음이 상황에 들어가면 어떻게됩니까? 필자는 키 스트로크를 시뮬레이션하려고 시도하는 대신 직접 코딩해야한다고 생각합니다. keydown 이벤트를 트래핑하는 경우 Enter 키의 기본 동작을 취소하고 다음 비트가 무엇이든간에 수행하십시오. – nnnnnn

답변

0

뭔가 일하는 것이 IE하지 :

나는 바이올린에 그것을 코딩 한
function keyPress(e) { 
    if (e.which == 13) { 
     $(document).trigger(jQuery.Event('keydown', {which: 9})); 
     // do something 
     alert('Enter') 
    } 
    if (e.which == 9) { 
     // do something 
     alert('Tab'); 
    } 

}; 

$(document).bind("keydown", keyPress); 

- @nnnnnn 코멘트에 또한 http://jsfiddle.net/FAe6U/


안부 :

나에게는 그냥 키 입력을 시뮬레이트하기 위해 을 시도하는 대신 직접 코드를 작성하십시오.

이 시도 :

내가 바이올린에 그것을 코딩 한
var tabPress; 
function keyPress(e) { 
    if (e.which == 13) { 
     if (tabPress == 1){ 
      e.preventDefault(); 
      alert('tab and enter'); 
     } 
     else{e.preventDefault(); alert('enter')} 
    } 
    else if (e.which == 9) { 
     e.preventDefault(); 
     tabPress = 1; 
    }; 
}; 

function keyRelease(){tabPress = 0;} 
$(document).bind("keydown", keyPress); 
$(document).bind("keyup", keyRelease); 

-http://jsfiddle.net/f4Ybn/

+0

자세한 답변을 보내 주셔서 감사합니다.하지만 다른 접근 방식을 사용했습니다. 두 번째 버튼의 클릭을 시뮬레이션하기 위해이 코드를 뒤에 추가했습니다 : RemindEmail.Attributes.Add ("onkeypress", "javascript : if (event.which || event.keyCode) {if ((event.which == 13) || (event.keyCode == 13)) {document.getElementById (' "+ SendPasswordReminderButton.ClientID +"') .click(); false를 반환합니다.}} else {return true}; ' 탭을 시뮬레이션 한 다음 엔터 키를 입력하면 무한 루프가 발생할 수 있습니다. 두 번째 방법은 이것을 통합하기 위해 편집되었을 수도 있지만,이 다른 방법은 꽤 간단합니다. – Andrew

관련 문제