2014-07-20 24 views
5

JQuery ile göndermeyi engellemeye çalıştığım bir formla gerçekten basit bir sayfam var, ancak kod şaşırtıcı bir şekilde çalışmıyor. Herhangi bir fikir? <form> bile var önce yürütür böyleceÖnlemeDefault formun gönderilmesini engellemiyor

<!DOCTYPE html> 
<html> 
    <head> 
     <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script> 
     <script> 

      $("#searchForm").submit(function(e){ 
       e.preventDefault(); 
     }); 

    </script> 

</head> 
<body> 
    <form id="searchForm"> 
     <input name="q" placeholder="Go to a Website"> 
     <input type="submit" value="Search"> 
    </form> 
    <pre id="response"></pre> 
</body> 

cevap

5

Sen DOM hazır olduğunda idam böylece .ready() kodunuzu kaydırmak gerekir.

$(document).ready(function() { 
    $("#searchForm").submit(function(e){ 
     e.preventDefault(); 
    }); 
}); 
3

Kodunuz başlığındaki olduğunu. Böylece, #searchForm seçicisi hiçbir şeyle uyuşmuyor. Komut etiketini formun altına koyun.

+2

Ayrıca sayfa 'DOMContentLoaded' olay dinleyicisi kullanarak yüklenmesi tamamlandıktan kadar onların JavaScript yürütmüyor yapabilir, bu olsa jQuery ne olduğundan emin değil. Ancak sayfanın altındaki JavaScript’in olması, oluşturmayı engellemediği için daha iyidir. – David

0
$(document).on('submit', function(e){ 
    e.preventDefault(); 
}); 
2

Tarayıcı, sayfayı yüklemeyi bitirinceye kadar, olay dinleyicisi işlevinizin eklenmesini geciktirmeniz gerekir. Aksi halde, bu JavaScript satırları form öğesi mevcut olmadan çalışır, böylece işlev ona eklenmez.

Wrap jQuery's .ready() method olay-dinleyici:

$(document).ready(function() { 
    $('#searchForm').submit(function(event) { 
    event.preventDefault(); 
    }); 
}); 
İlgili konular