0

웹 페이지에 두 개의 텍스트 상자와 두 개의 버튼이 있습니다.Internet Explorer의 onkeypress가 웹 페이지의 키 누르기와 관련된 모든 기능을 호출합니다.

각 텍스트 상자에는 반환 키를 확인하고 특정 javascript 함수를 호출하는 자체 keypress 함수가 있습니다.

그러나 문제는 내가 텍스트 상자에 입력을 시작하고 두 함수가 호출되는 경우입니다.이 문제는 Internet Explorer에서만 발생합니다.

때 onKeyPress이 때문에 이벤트 버블 링이다

onkeypress="if(event.keyCode==13) submitEmail();" 

onkeypress="if(event.keyCode==13) login();" 

감사

답변

2

입력 된 태그의 속성이라하고있다. 이벤트가 요소에서 발생하면 DOM 트리를 따라가는 순서로 요소를 포함하는 모든 요소에서 이벤트가 발생합니다. 입력 상자에서 Return 키를 누르면 창에서 return 키를 누릅니다.

input 요소의 onkeypress 속성에 return false;을 추가하면 거품이 생기지 않습니다.

<input ... onkeypress="if(event.keyCode==13) { submitEmail();return false; }"> 
+1

덕분에 .... 난 그냥 중괄호를 추가했다 그리고 <일을 입력 ... 때 onKeyPress = "(event.keyCode에서 == 13) 경우 {submitEmail은(); false를 반환;} "> – nitin

+0

나는 똑같은 것을 깨달았습니다. 내가 가지고있는 방식대로,'return false;'가 디폴트 액션을 막았 기 때문에, 모든 non-Return 입력은 무시 될 것입니다. – Barmar

0

키 누르기 기능을 설정하기 전에 각 입력을 대상으로 스크립트 태그 또는 외부 js 파일에서 설정할 수 있습니다. 답장을

<input type="text" id="email"> 
<input type="text" id="login"> 

<script> 
var emailBox = document.getElementById("email") 
emailBox.onkeypress = function(e){ 
    if(e.keyCode == 13) submitEmail(); 
} 

var loginBox = document.getElementById("login") 
loginBox.onkeypress = function(e){ 
    if(e.keyCode == 13) login(); 
} 
</script> 
+0

Barmar의 솔루션이 더 빠르고 쉽게 해결되는 것 같습니다. – relic