2013-07-22 1 views
16

필자는 방금 입력 한 하나의 INPUT (숨김이 아님)이 들어있는 양식이 Enter 키를 누르면 자동으로 제출된다는 것을 알게되었습니다.하나의 텍스트 입력이있는 FORM이 두 개의 텍스트 입력이있는 FORM은 입력하지 않는 이유는 무엇입니까?

그러나 적어도 2 개의 입력 (숨김이 아님)이 포함 된 양식은 입력을 누르면 제출되지 않습니다.

jsfidle에서보세요 (스크립트 중에이 제출/버튼/입력이없는 내부 [타입 = 제출). 이 행동에 대한 설명/표준이 있습니까?

<form id="form1" method="POST"> 
    <p>Does submit:</p> 
    <input type="text" placeholder="focus and press enter"/> 
</form> 

<form id="form2" method="POST"> 
    <p>Does <strong>not</strong> submit:</p> 
    <input type="text" placeholder="does not submit"/> 
    <input type="text" placeholder=""/> 
</form> 
+0

당신이 제출 2 폼에'입력 유형 = submit'를 추가하는 경우

$(document).ready(function() { $('input,select').keypress(function(event) { return event.keyCode != 13; }); });

. 나는 그것에 대한 표준을 찾고있다 –

답변

23

이 동작은 HTML 2.0 사양에서 추가 된 것입니다. 자세한 내용은 다음 문서를 참조하십시오 :

Form submission and the ENTER key?

를 하나의 단일 라인 텍스트 입력 필드 형태로 존재하는 경우, 사용자 에이전트가 를 제출 요청으로 해당 필드에 입력 받아 들여야한다 형태

출처 : W3C Specs

+0

나는 스펙의 관련 부분을 복사 할 자유를 취했다. 좋은 답변, upvoted –

+0

당신의 업데이 트가 대답을 향상되었습니다 - 감사합니다! –

+2

WWW 역사상 가장 큰 WTF 중 하나 여야합니다. 그것은 당신이 스펙을 발견하고 이것이 왜 이렇게되었는지 이해할 때까지입니다. 그러면 멋진 xD입니다. – anddoutoi

4

브라우저 별 구현입니다. . . IE의 일부 버전은 실제로 기본적으로 그렇게하지 않지만 Firefox와 다른 일부 브라우저는 한 텍스트 상자가있는 양식의 경우 사용자 (또는 페이지 디자이너)가 항상 양식을 제출하기를 원합니다 해당 입력란에서 Enter에 있습니다.

실제로 여러 번 코드를 작성해야했습니다. . . 내 의견으로는 의심스러운 브라우저 디자인 결정 중 하나입니다.

편집 :

당신이 관심이 있다면 귀하의 질문에 미묘한 차이 답변이 있습니다. . . 분명히 다른 브라우저 (및 다른 버전)는이 특정 상황과 관련하여 다른 양식 (예 : click 이벤트 발생 여부)을 포함하여 다른 행동을합니다. 자세한 내용을 보려면 링크를 제공 할 수 있습니다. .

그러나 간결한 대답은 실제로 여러 브라우저에서 일관되게 지원되지 않는다면 의도적 인 것입니다.

1

는 IE에서 작동해야 다음에 추가합니다.

관련 문제