Vô hiệu hóa biểu mẫu tự động gửi vào nút bấm


180

Tôi có một hình thức HTML nơi tôi sử dụng một số nút. Vấn đề là cho dù tôi nhấp vào nút nà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 việc gửi biểu mẫu.

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

Tôi sử dụng jQuery và jQuery UI và trang web nằm trong HTML5.

Có cách nào để vô hiệu hóa hành vi tự động này?

Câu trả lời:


460

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ư được chỉ định bởi khuyến nghị HTML ).


24
mất ngủ một ngày vô cùng sửa mã của tôi vì tôi không biết đặc tả đơn giản này!
palerdot

4
Báo lại khái niệm của palerdot, rất 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 hàng giờ. Rất biết, cảm ơn nhiều.
brooklynsweb

2
@NiketJoshi - Câu nói đó dường như không liên quan gì đến câu hỏi này. Nếu bạn có một câu hỏi mới thì hãy hỏi một câu nhưng hãy chắc chắn rằng bạn cung cấp một tuyên bố vấn đề rõ ràng và một ví dụ có thể lặp lại tối thiểu .
Quentin

19

Bạn chỉ có thể thử sử dụng return false (return false ghi đè hành vi mặc định trên mọi thành phần DOM) như thế:

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

và sau đó gửi biểu mẫu của bạn bằng cách sử dụng myform.submit ()

Hay cách khác :

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

Ngoài ra, nếu bạn sử dụng type="button"mẫu của bạn sẽ không được gửi.


8

<button>Trên thực tế, các nút gửi, chúng không có chức năng chính khác. Bạn sẽ phải đặt loại thành nút.
Nhưng nếu bạn liên kết trình xử lý sự kiện của mình như bên dưới, 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 từng nút!

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

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

0

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

 onclick="return false;" 

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

điều này sẽ ngăn chặn hành vi gửi biểu mẫu


0

một số khác:

if(this.checkValidity() == false) {

                $(this).addClass('was-validated');
                e.preventDefault();
                e.stopPropagation();
                e.stopImmediatePropagation();

                return false;
}
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.