Enter 키를 누를 때 모달 해제 방지


107

내부에 폼이있는 부트 스트랩 모달을 설정했는데 Enter 키를 누르면 모달이 해제되는 것을 알았습니다. Enter 키를 누를 때 해제하지 않는 방법이 있습니까?

keyboard : false로 모달 활성화를 시도했지만 ESC 키로 만 해제 할 수 없습니다.


이 질문이 좋아요. 플러그인의 소스 코드를 편집하지 않는 이유는 무엇입니까?
라이언

유용한 정보를 찾으면 편집하겠습니다. 그동안 누군가가 답을 알고 있기를 바랍니다.
Luke Morgan

내가의 keyup에 click.dismiss.modal 변경, 그것은 좋은 것 같다, 내가 뭔가 다른 망쳐 경우 나중에보고 다시 확인합니다
누가 복음 모건

네, 버튼을 망쳤습니다 (나는 이러한 문제를 피하기 위해 onclick = "$ ( '# signinModal'). modal ( 'hide');"를 추가했습니다. 이제 모든 것이 괜찮아 보입니다.)
Luke Morgan

답변:


122

나도이 문제가 있었다.
내 문제는 모달에 닫기 버튼이 있다는 것입니다.

<button class="close" data-dismiss="modal">&times;</button>

입력 필드에서 Enter를 누르면이 버튼이 실행됩니다. 대신 앵커로 변경했으며 이제 예상대로 작동합니다 (양식을 제출하고 모달을 닫지 않음).

<a class="close" data-dismiss="modal">&times;</a>

귀하의 출처를 보지 않고는 귀하의 원인이 동일한 지 확인할 수 없습니다.


아니요, 버튼을 사용하지 않았습니다. <a> 항목을 사용했습니다. 다른 것 같습니다. 내가 사용하는 코드는 기본적으로 부트 스트랩 페이지의 샘플 코드이며 내부에 양식이 추가되었습니다
Luke Morgan

오른쪽 상단에 버튼이 보이지 않아서 문제였습니다. 이제 잘 작동합니다. 감사합니다!
Luke Morgan

+1, 훌륭한 찾기! 누군가 이것을 부트 스트랩 문제 추적기에 넣었는지 궁금합니다. 나는 지금 확인하기에는 너무 게으르다. 아마도 점심 후에.
Andrew

8
이것은 단순한 버튼 문제가 아닙니다. 모달에서 모든 버튼 (오른쪽 상단 "x"포함)을 제거했지만 단일 양식 텍스트 필드가있는 경우 Enter 키를 누르면 대화 상자가 닫힙니다. 이상하게도 단일 텍스트 필드가있을 때만 문제가됩니다. 두 개가 있으면 Enter는 어떤 필드에 포커스가 있더라도 모델을 닫지 않습니다.
jpeskin 2013 년

11
하나의 버튼 취소에 유형 = "버튼"을 사용할 수 있습니다
Muayyad Alsadi


19

내 Bootstrap Modal에서 모든 버튼을 제거한 후에도이 문제가 발생했기 때문에 여기에 나온 해결책 중 어느 것도 도움이되지 않았습니다.

단일 텍스트 필드가있는 양식을 사용하면 키보드 포커스가 텍스트 필드에있을 때 Enter 키를 누르면 브라우저가 양식 제출을 수행하고 결과가 닫힙니다. 이것은 Bootstrap의 어떤 것보다 브라우저 / 양식 문제인 것 같습니다.

내 해결책은 양식의 onsubmit 속성을 onsubmit = "return false"로 설정하는 것이 었습니다.

실제로 제출 이벤트를 사용하는 경우 문제가 될 수 있지만 브라우저 제출을 수행하는 대신 AJAX 요청을 생성하는 JS 프레임 워크를 사용하고 있으므로 제출을 완전히 비활성화하는 것을 선호합니다. (또한 제출을 트리거 할 수있는 모든 양식 요소를 수동으로 조정할 필요가 없음을 의미합니다).

여기에 더 많은 정보 : 단일 텍스트 입력 필드가있는 부트 스트랩 모달 대화 상자는 Enter 키에서 항상 닫힘


2
이미 type="button"모든 닫기 / 취소 버튼이 있었지만 여전히 Enter 키가 내 모달을 닫는 데이 문제가있었습니다. 내 모달에 입력 텍스트 필드가 하나 뿐이며 솔루션이 수정했습니다. 답변 해 주셔서 감사합니다!
Darren Parker

7

취소 버튼 앞에 로그인 버튼을두면 문제가 해결됩니다.

<div class="modal-footer">
    <button type="submit" class="btn primary">Login</button>
    <button type="submit" class="btn" data-dismiss="modal">Cancel</button>
</div>

6
취소는 유형 제출이 아니어야합니다.
Manatax

5

나는 같은 문제가 있었고 나는 그것을 해결했다.

<form onsubmit="return false;">

하지만 해결책이 하나 더 있습니다. 보이지 않는 더미 입력을 추가 할 수 있으므로 양식은 다음과 같습니다.

<form role="form" method="post" action="submitform.php">
    <input type="text" id="name" name="name" >
    <input type="text" style="display: none;">
</form>

3

나는 방금 비슷한 경험을했고 그것을 해결하는 방법은 태그를 사용하는 대신 태그를 type = "button"태그로 변경했습니다. 이것은 "enter"키를 누르고 부트 스트랩 모달을 해제하는 문제를 해결하는 것처럼 보였습니다.


2

나도이 문제가 있었고 이렇게 해결했습니다. 양식에 onsubmit을 추가했습니다. 또한 엔터 키를 저장 키로 사용할 수 있기를 원했기 때문에 onsubmit에 save_stuff () javascript를 추가했습니다. 거짓 반환; 양식 제출을 방지하는 데 사용됩니다.

<form onsubmit="save_stuff(); return false;">
 ...
</form>

<script>
    function save_stuff(){
      //Saving stuff
    }
</script>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.