2012-10-08 2 views
2

나는 ENTER 키를 눌렀을 때 함수를 호출 한 텍스트 필드가 있습니다. 문제는 페이지가 재로드되어서 js 함수만을 호출했기 때문에 발생하지 않아야한다는 것입니다. . 내가 뭘 잘못하고 있는지 말해줘.OnKeyPress Enter Reloads Page

+0

페이지에 아무 버튼이 있습니까? 어쩌면 전화를 받았을까요? –

+0

은 어떤 형태의이 코드입니까? 필드의 입력 버튼을 누르면 양식이 자동 제출됩니다. 당신은 false onkeypress를 돌려줌으로써 그것을 막을 수 있습니다. – Anoop

+0

예. 그렇습니다. 그러나 모든 버튼의 타입은 'button'으로 설정되어 있습니다. – tannerjohn

답변

5

양식을 입력하면 제출됩니다. 폼에 onsubmit 이벤트를 첨부하고 제출을 방지하기 위해 false를 반환 할 수 있습니다 (제출할 사실은 true). 제출하기 전에이 기능을 사용하여 데이터를 확인하거나 keypress 이벤트를 가로 챌 수 있습니다.

아래에 설명 된대로 event.preventDefault()를 사용하여 제출 실행을 누르는 것을 방지 할 수 있습니다. 이 같은

뭔가 ...

<form action="."> 
    <input type="text" onkeypress="console.log('happy days'); event.preventDefault()"> 
</form> 
+0

내가 onsubmit = "return false"로 폼을 설정하면. js 함수가 작동하지 않습니다. – tannerjohn

+0

@ billymoon..what 더 많은 코드를 추가해야합니까? – tannerjohn

+0

@ tannerjohn 업데이트 된 답변을 참조하십시오. –

3

나는이 오래된 메시지 알지만, 나는 그것이 "false를 돌려"추가 해결 :

<input type="text" onkeypress="if (event.keyCode==13){ func_name(this.value);return false;}" id="userinput"/> 

어쩌면 그것은 다른에 유용합니다 비슷한 문제.

관련 문제