Düğme tıklandığında form otomatik göndermeyi devre dışı bırak


180

Birkaç düğme kullandığım bir HTML formu var. Sorun, hangi düğmeyi tıkladığım önemli değil, düğme "gönder" türünde olmasa bile formun gönderilmesidir. Örneğin: gibi düğmeler <button>Click to do something</button>form gönderimi ile sonuçlanır.

Bu e.preventDefault()düğmelerin her biri için bir yapmak oldukça acı verici .

Ben jQuery ve jQuery UI kullanın ve web sitesi HTML5.

Bu otomatik davranışı devre dışı bırakmanın bir yolu var mı?

Yanıtlar:


460

Düğmeler gibi <button>Click to do something</button> olan düğmeleri gönderin.

type="button"Bunu değiştirmek için ayarlayın . type="submit"varsayılan değerdir ( HTML önerisinde belirtildiği gibi ).


24
Bu basit özellikleri bilmiyordum çünkü kodumu sabitleme bir gün uyku boşuna kaybetti!
palerdot

4
Palerdot'un fikrini yankılandırarak, hızlı bir Google aramasından sonra bu saati bulduğuma sevindim ve saatlerce öldürmedim. Çok biliyorum, çok teşekkürler.
brooklynsweb

2
@NiketJoshi - Bu ifadenin, bunun cevapladığı soru ile ilgisi yok gibi görünüyor. Yeni bir sorunuz varsa, bir soru sorun, ancak açık bir sorun bildirimi ve minimum tekrarlanabilir bir örnek sağladığınızdan emin olun .
Quentin

19

Bunun gibi return false (return false, her DOM öğesinde varsayılan davranışı geçersiz kılar) kullanmayı deneyebilirsiniz :

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

ve ardından formumu myform.submit () kullanarak gönderin

Veya alternatif olarak :

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

Ayrıca, type="button"formunuzu kullanırsanız gönderilmez.


8

<button>aslında düğmelerini gönderin, başka bir ana işlevi yoktur. Türü düğmesine ayarlamanız gerekir.
Ancak, olay işleyicinizi aşağıdaki gibi bağlarsanız, tüm düğmeleri hedeflersiniz ve her düğme için manuel olarak yapmanız gerekmez!

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

Öyle e.preventDefault();.
hlcs

0

girdiye doğrudan nitelik olarak eklemek istiyorsanız bunu kullanın

 onclick="return false;" 

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

bu form gönderme davranışını önler


0

bir diğeri:

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

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

                return false;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.