2012-03-22 11 views
120

Tôi có biểu mẫu HTML nơi tôi sử dụng một số nút. Vấn đề là bất kể nút nào tôi nhấp vào, biểu mẫu sẽ được gửi ngay cả khi nút không thuộc loại "gửi". ví dụ. Các nút như: <button>Click to do something</button>, dẫn đến gửi biểu mẫu.Vô hiệu hóa tự động gửi biểu mẫu trên nút bấm

Thật là đau đớn khi thực hiện một e.preventDefault() cho mỗi một trong các nút này.

Tôi sử dụng giao diện người dùng jQuery và jQuery và trang web có trong HTML5.

Có cách nào để tắt hành vi tự động này không?

Trả lời

277

Các nút như <button>Click to do something</button> nút gửi.

Đặt type="button" để thay đổi điều đó. type="submit" là mặc định (như specified by the HTML recommendation).

+5

bị mất ngủ một ngày vô ích sửa chữa mã của tôi, vì tôi không biết đặc điểm kỹ thuật đơn giản này ! – palerdot

+4

Echoing khái niệm của palerdot, vui vì tôi tìm thấy ghi chú này sau khi tìm kiếm nhanh trên Google và không bị giết giờ. Rất biết, cảm ơn rất nhiều. – brooklynsweb

+0

điều này thật tuyệt vời để biết! –

5

<button> thực tế là gửi nút, họ không có chức năng chính khác. Bạn sẽ phải đặt loại nút.
Nhưng nếu bạn ràng buộc trình xử lý sự kiện như dưới đây, bạn nhắm mục tiêu tất cả các nút và không phải thực hiện thủ công cho mỗi nút!

$('form button').on("click",function(e){ 
    e.preventDefault(); 
}); 
+0

Đó là 'e.preventDefault();'. – hlcs

+0

cảm ơn, kinda đã bỏ lỡ 5 năm trước ;-) –

11

Không khó để làm những gì bạn muốn. Bạn chỉ có thể thử sử dụng trở lại sai (trở về ghi đè sai hành vi mặc định trên tất cả các phần tử DOM) như thế:

myform.onsubmit=function() 
{ 
    //do what you want; 
    return false; 
} 

và sau đó nộp mẫu đơn của bạn sử dụng myform.submit()

hoặc cách khác:

mybutton.onclick=function() 
{ 
    //do what you want; 
    return false; 
} 

Tuy nhiên tôi nghĩ loại đầu vào = "nút"/Nút loại = "nút" sẽ không gửi biểu mẫu của bạn và bạn có thể sử dụng chúng mà không gặp bất kỳ sự cố nào.

-1

nếu bạn muốn thêm trực tiếp đến đầu vào như thuộc tính, sử dụng

onclick="return false;" 

<input id = "btnPlay" type="button" onclick="return false;" value="play" /> 

hình thức này này sẽ ngăn trình hành vi