2012-01-24 46 views
95

thể trùng lặp:
HTML: Submitting a form by pressing enter without a submit buttonGửi biểu mẫu bằng phím Enter mà không cần gửi?

Làm thế nào tôi có thể gửi một hình thức chỉ với phím Enter trên một lĩnh vực nhập văn bản, mà không cần phải thêm một nút gửi?

Tôi nhớ điều này đã làm việc trong quá khứ, nhưng tôi đã thử nghiệm nó ngay bây giờ và biểu mẫu không được gửi trừ khi có trường nhập loại gửi bên trong nó.

+0

Câu hỏi rất hữu ích, cảm ơn) –

Trả lời

189
$("input").keypress(function(event) { 
    if (event.which == 13) { 
     event.preventDefault(); 
     $("form").submit(); 
    } 
}); 
+2

Đừng quên thêm # vào trước id đầu vào – MadsterMaddness

+8

@MadsterMaddness Chỉ sử dụng '#' nếu chúng ta chỉ định ID của một phần tử. Từ câu trả lời đó, nó chỉ định TẤT CẢ các phần tử ''. – Mai

44

Thay đổi #form để ID của mẫu của bạn

$('#form input').keydown(function(e) { 
    if (e.keyCode == 13) { 
     $('#form').submit(); 
    } 
}); 

Hoặc cách khác

$('input').keydown(function(e) { 
    if (e.keyCode == 13) { 
     $(this).closest('form').submit(); 
    } 
}); 
+8

Bạn có thể ràng buộc sự kiện keydown trên biểu mẫu, thay vì ràng buộc các đầu vào riêng lẻ: sự kiện keydown sẽ truyền đến biểu mẫu. – Beejamin

+0

thực sự hữu ích! có nghĩa là không gửi các nút biểu mẫu ở mọi nơi – cwiggo

+2

Nếu biểu mẫu của bạn có nhiều yếu tố đầu vào thì tốt hơn một chút là liên kết trình xử lý với biểu mẫu và lọc các sự kiện từ các yếu tố đầu vào như sau: $ ('# form'). keydown ',' input ', function (e) {... –

14

câu trả lời Jay Gilford sẽ làm việc, nhưng tôi nghĩ rằng thực sự là cách đơn giản nhất là chỉ cần tát một display: none; trên một nút gửi trong biểu mẫu.

+4

Điều này không hiệu quả đối với tôi, tôi phải thiết lập khả năng hiển thị: ẩn; –

5

@ Câu trả lời của JayGuilford là một câu trả lời hay, nhưng nếu bạn không muốn phụ thuộc JS, bạn có thể sử dụng phần tử gửi và chỉ cần ẩn nó bằng cách sử dụng display: none;.

Các vấn đề liên quan