Tránh bỏ qua phương thức khi nhấn phím enter


107

Tôi đã thiết lập một phương thức bootstrap với một biểu mẫu bên trong nó, tôi chỉ nhận thấy rằng khi tôi nhấn phím Enter, phương thức bị loại bỏ. Có cách nào để không loại bỏ nó khi nhấn Enter không?

Tôi đã thử kích hoạt phương thức bằng keyboard: false, nhưng điều đó chỉ ngăn chặn việc loại bỏ bằng phím ESC.


Tôi thích câu hỏi này. Tại sao không chỉ chỉnh sửa mã nguồn của plugin?
Ryan

Tôi sẽ xem xét vấn đề đó, nếu tôi thấy điều gì hữu ích, tôi sẽ chỉnh sửa. Trong khi chờ đợi, tôi hy vọng ai đó biết câu trả lời.
Luke Morgan

Tôi đã thay đổi từ click.dismiss.modal thành keyup, có vẻ ổn, tôi sẽ kiểm tra lại sau để xem liệu tôi có làm hỏng thứ gì khác không
Luke Morgan

Đúng vậy, điều đó đã làm hỏng các nút (tôi đã thêm onclick = "$ ('# signinModal'). Modal ('hide');" để tránh những vấn đề đó, bây giờ mọi thứ đều ổn)
Luke Morgan

Câu trả lời:


122

Tôi cũng vừa gặp vấn đề này.
Vấn đề của tôi là tôi có một nút đóng trong phương thức của mình

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

Nhấn enter trong trường nhập khiến nút này được kích hoạt. Tôi đã thay đổi nó thành một neo để thay thế và nó hoạt động như mong đợi ngay bây giờ (enter gửi biểu mẫu và không đóng phương thức).

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

Tuy nhiên, nếu không thấy nguồn của bạn, tôi không thể xác nhận rằng nguyên nhân của bạn cũng giống như vậy.


Không, không có nút nào được sử dụng, tôi đã sử dụng <a> các mục, tôi đoán đó là thứ khác. Mã tôi sử dụng về cơ bản là mã mẫu trên trang bootstrap, chỉ với một biểu mẫu được thêm vào bên trong
Luke Morgan

Tôi không thấy nút ở góc trên bên phải, đó là vấn đề. Bây giờ nó hoạt động tốt, cảm ơn!
Luke Morgan

+1, Tìm thấy xuất sắc! Tôi tự hỏi nếu có ai đã đặt điều này trong trình theo dõi vấn đề bootstrap? Tôi quá lười để kiểm tra vào lúc này. Có lẽ sau bữa trưa.
Andrew

8
Đây không chỉ là một vấn đề về nút. Tôi đã xóa tất cả các nút khỏi phương thức của mình (bao gồm cả "x" phía trên bên phải), nhưng nếu tôi có một trường văn bản biểu mẫu duy nhất, nhấn Enter sẽ loại bỏ hộp thoại. Kỳ lạ là nó chỉ có vấn đề khi có một trường văn bản duy nhất. Khi tôi có hai, Enter không loại bỏ mô hình cho dù trường nào có tiêu điểm.
jpeskin

11
người ta có thể sử dụng type = "button" vào nút hủy
Muayyad Alsadi


19

Tôi đã gặp sự cố này ngay cả sau khi loại bỏ TẤT CẢ các nút khỏi Bootstrap Modal của mình, vì vậy không có giải pháp nào ở đây giúp tôi.

Tôi nhận thấy rằng biểu mẫu có một trường văn bản sẽ khiến trình duyệt thực hiện gửi biểu mẫu (và dẫn đến loại bỏ), nếu bạn nhấn Enter trong khi tiêu điểm bàn phím nằm trên trường văn bản. Đây dường như là một vấn đề về trình duyệt / biểu mẫu hơn bất cứ điều gì với Bootstrap.

Giải pháp của tôi là đặt thuộc tính onsubmit của biểu mẫu thành onsubmit = "return false"

Đây có thể là một vấn đề nếu bạn thực sự đang sử dụng sự kiện gửi, nhưng tôi đang sử dụng các khuôn khổ JS tạo yêu cầu AJAX thay vì thực hiện gửi trình duyệt, vì vậy tôi muốn tắt hoàn toàn gửi. (Điều đó cũng có nghĩa là tôi không phải điều chỉnh thủ công mọi thành phần biểu mẫu có thể kích hoạt gửi).

Thông tin thêm tại đây: Hộp thoại phương thức Bootstrap với một trường nhập văn bản duy nhất luôn loại bỏ trên phím Enter


2
Tôi đã có type="button"tất cả các nút đóng / hủy, nhưng vẫn gặp sự cố này với phím enter để đóng phương thức của tôi. Tôi chỉ có 1 trường văn bản đầu vào trong phương thức của mình và giải pháp của bạn đã sửa lỗi đó. Cảm ơn câu trả lời của bạn!
Darren Parker

7

Bạn có thể đặt nút đăng nhập trước nút hủy và điều này cũng sẽ giải quyết được vấn đề bạn đang gặp phải.

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

6
Hủy bỏ không nên loại trình
Manatax

5

Tôi đã gặp vấn đề tương tự và tôi đã giải quyết nó bằng

<form onsubmit="return false;">

nhưng có một giải pháp khác, bạn có thể thêm đầu vào giả ẩn, vì vậy biểu mẫu của bạn sẽ giống như sau:

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

3

Tôi vừa gặp phải trải nghiệm tương tự và cách tôi giải quyết vấn đề này là thay vì sử dụng thẻ, tôi đã đổi thẻ thành thẻ có type = "button". Điều này dường như giải quyết vấn đề nhấn phím "enter" và loại bỏ phương thức bootstrap.


2

Tôi cũng đã gặp vấn đề này và tôi đã giải quyết nó theo cách này. Tôi đã thêm thư gửi vào biểu mẫu. Tôi cũng muốn có thể sử dụng khóa enter làm khóa lưu, vì vậy tôi đã thêm javascript save_stuff () vào gửi kèm. trả về sai; được sử dụng để ngăn chặn việc gửi biểu mẫu.

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

<script>
    function save_stuff(){
      //Saving stuff
    }
</script>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.