>웹 프론트엔드 >JS 튜토리얼 >JS onkeypress 호환성 작성방법_javascript 스킬에 대한 자세한 설명

JS onkeypress 호환성 작성방법_javascript 스킬에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 15:03:271714검색

백그라운드 이벤트를 실행하려면 비밀번호를 입력하고 Enter를 눌러야 합니다. 매우 간단한 요구사항인 것 같지만 많은 문제에 직면합니다.

HTML 콘텐츠에는 주로 비밀번호 입력 텍스트 상자와 배경 이벤트를 실행하는 버튼이 포함되어 있습니다.

1. TextBox 텍스트 상자에 초점이 맞춰진 후 Enter 키를 누르면 페이지가 새로 고쳐집니다.
코드를 주의 깊게 연구한 결과 페이지에 텍스트 상자 컨트롤이 하나만 있는 경우 Enter 키를 누르면 페이지가 새로 고쳐지는 것으로 나타났습니다.
해결 방법: 숨겨진 TextBox 컨트롤을 페이지에 추가하십시오.
구체적인 원리는 알려져 있지 않습니다!

2. Jquery를 사용하여 메서드를 구현합니다.

 $(document).ready(function(){
  $("#tbPassword").focus();
  $('#bPassword').keydown(function(e){     
    if(e.keyCode == 13){ 
      $("#ctl00_ContentBody_btnAccept_linkButton")[0].click();
    }    
  });
  });

3. 여러 가지 이유로 Jquery 구현 방식을 사용할 수 없어서 대신 JS를 사용해야 하는 것이 가장 문제입니다.

  document.getElementByIdx_x_x("tbPassword").onkeypress = function(event){
    var keynum;
    if(window.event) // IE
    {
     keynum = window.event.keyCode;
    }
    else if(event.which) // Netscape/Firefox/Opera
    {
     keynum = event.which;
    }
    
    if (keynum == 13)
      document.getElementByIdx_x_x('ctl00_ContentBody_btnAccept_linkButton').click();
  }

설명:

IE에서 키보드 키 읽기:

keynum = event.keyCode; // 字母d,keynum=100
    keychar = String.fromCharCode(keynum); // 将keynum转换成字符d

FireFox에서 키보드 키 읽기:

 keynum = event.which; // 字母d,keynum=100
    keychar = String.fromCharCode(keynum); // 将keynum转换成字符d

예를 들어 IE에는 keyCode 속성만 있고, FireFox에는 which와 charCode 속성이 있고, Opera에는 keyCode와 which 속성 등이 있습니다.

따라서 이 호환성 문제는 Jquery에서 해결되었습니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.