나는 '기본 단추'가 바람직하지 않게 발사되는 오래된 문제에 대한 해결책이 필요합니다. 즉 입력란에 입력을 누르지 만 실행하려는 것이 아닌 양식에 제출 버튼이 있습니다 (아니면 양식이 전혀 실행되기를 원하지 않을 수도 있음).'발사에서 양식의 기본 단추 방지'문제에 대한 좋은 해결책은 무엇입니까?
다음 '해결책'에 대해 궁금합니다. 약간 hacky하지만 내가 말할 수있는 한 신뢰할 수 있어야합니다.
첫 번째 것은 보이지 않는 버튼입니다. 그런 다음 일부 jquery가 즉시이를 비활성화합니다. 양식에서 Enter 키를 누르면이 단추는 '기본 단추'로 계산되고 트리거되지만 'return false'이벤트 처리기로 인해 아무 것도 수행하지 않습니다.
솔루션 이전에 keydown 이벤트 처리기 또는 기타 모든 복잡한 브라우저/모든 브라우저에서 테스트하기 어려운 것에 의존했습니다.
내 솔루션 (이전에는 보지 못했지만 아마도 고유하지 않은 것 같습니다)은 훨씬 단순 해 보이며 신뢰할 만합니다. 서버가 양식 데이터에서이 버튼을 수신하기 때문에 자바 스크립트가 사용 중지되었는지 여부를 알 수 있습니다.
<form action="/store/checkout" method="post">
<input id="btnFakeSubmit" name="FakeSubmit" src="/images/pixel.gif"
style="width:1px; height:1px; position:absolute;" type="image" />
<script>
$('#btnFakeSubmit').click(function() {
return false;
});
</script>
모든 브라우저에서 버튼을 숨기는 가장 좋은 방법을 포함한이 솔루션에 대한 조언. 당신이 할 수
Enter 키를 누르면 양식 아래에 "첫 번째"버튼이 표시됩니다. 그건 내 브라우저와 내 양식 (Firefox 3.5) – hasen
@ happenily 내 원래의 질문은 '첫 번째 버튼을 모든 브라우저에서'트리거 된 다음 그것을 morphed 될거야 일어날 일이 아니에요. 흠, 병이 그걸 확인해야합니다. FF는 무엇을합니까? 키 이벤트 핸들러 또는 다른 것을 망친 라이브러리를 사용하지 않습니까? –
FF가 무슨 일을하는지 잘 모르겠다. 나는 그 일이 일어난다 고 생각하지만, 더 이상의 검사를 받으면 그럴 것 같지 않다. 적어도 제출 버튼이 없다면; 그것은 아무것도하지 않는 것 같습니다. – hasen