Ada apa dengan ini?
HTML:
<form action="http://localhost:8888/bevbros/index.php/test" method="post" accept-charset="utf-8" id="cpa-form" class="forms">
<input type="text" name="zip" value="Zip code" id="Zip" class="required valid">
<input type="submit" name="Next" value="Submit" class="forms" id="1">
</form>
jQuery:
$("#cpa-form").submit(function(e){
e.preventDefault();
});
jquery
preventdefault
djreed
sumber
sumber
alert()
dalam penangan kirim, apakah itu dipanggil? Jika tidak, maka bisa jadi ada kesalahan dalam skrip Anda yang mencegah pengendali kejadian terhubung dengan benar. Apa saja di konsol kesalahan?Jawaban:
Coba ini:
$("#cpa-form").submit(function(e){ return false; });
sumber
e.preventDefault()
berfungsi dengan baik dengan penyerahan formulir, masalahnya terletak di tempat lain di kode OP. Penggunaanreturn false
dapat mengakibatkan konsekuensi yang tidak diinginkan.Gunakan sintaks acara "on" yang baru.
$(document).ready(function() { $('form').on('submit', function(e){ // validation code here if(!valid) { e.preventDefault(); } }); });
Kutip: https://api.jquery.com/on/
sumber
$(document).ready()
) Bagaimana cara membuatnya bekerja?true
ataufalse
? Dapatkah Anda membuat ulang kode Anda di jsfiddle.net dan mengirimkan tautannya? Coba tambahkanalert()
untuk mengonfirmasi bahwa fungsi sedang aktif. Beberapa orang telah melaporkan bahwa menambahkane.stopPropagation();
setelahe.preventDefault();
menghentikan peristiwa yang dirantai lainnya agar tidak menembak.$('#myFormID').validationEngine('validate')
dari jQuery validationEngine sebagai variabelvalid
, untuk memeriksa apakah masukan adalah alamat email yang valid. Namun demikian, saya ingin mencegah perilaku default; apakahpreventDefault
harus berada di dalam blok if, bukan sebelumnya?preventDefault
di dalam blok jika tidak valid untuk menghentikan pengiriman formulir. Dengan kata lain, jika valid , gunakan perilaku default formulir.Ini adalah pertanyaan kuno, tetapi jawaban yang diterima di sini tidak benar-benar sampai ke akar masalahnya.
Anda bisa menyelesaikannya dengan dua cara. Pertama dengan jQuery:
$(document).ready( function() { // Wait until document is fully parsed $("#cpa-form").on('submit', function(e){ e.preventDefault(); }); })
Atau tanpa jQuery:
// Gets a reference to the form element var form = document.getElementById('cpa-form'); // Adds a listener for the "submit" event. form.addEventListener('submit', function(e) { e.preventDefault(); });
Anda tidak perlu menggunakan
return false
untuk memecahkan masalah ini.sumber
Saya percaya bahwa jawaban di atas semuanya benar, tetapi itu tidak menunjukkan mengapa
submit
metode tersebut tidak berhasil.Nah,
submit
metode ini tidak akan berfungsi jika jQuery tidak bisa mendapatkanform
elemennya, dan jQuery tidak memberikan kesalahan apa pun tentang itu. Jika naskah Anda ditempatkan di kepala dokumen, pastikan kode berjalan setelahDOM
ini siap . Jadi,$(document).ready(function () { // your code here // });
akan menyelesaikan masalah.Praktik terbaiknya adalah, selalu letakkan skrip Anda di bagian bawah dokumen.
sumber
$('#cpa-form input[name="Next"]').on('click', function(e){ e.preventDefault(); });
sumber
$(document).ready(function(){ $("#form_id").submit(function(){ return condition; }); });
sumber
Kode Anda Baik-Baik saja, Anda hanya perlu menempatkannya di dalam fungsi ready.
$(document).ready( function() { $("#cpa-form").submit(function(e){ e.preventDefault(); }); }
sumber
Anda juga dapat mencoba kode ini, jika Anda memiliki misalnya nanti menambahkan formulir dinamis. Misalnya Anda memuat jendela async dengan ajax dan ingin mengirimkan formulir ini.
$('#cpa-form').live('submit' ,function(e){ e.preventDefault(); // do something });
Kasus 1, versi statis: Jika Anda hanya memiliki sedikit pendengar dan formulir yang harus ditangani adalah hardcode, maka Anda dapat mendengarkan langsung di "level dokumen". Saya tidak akan menggunakan pendengar pada level dokumen tetapi saya akan mencoba lebih dalam di pohon malapetaka karena dapat menyebabkan masalah kinerja (tergantung pada ukuran situs web Anda dan konten Anda)
$('form#formToHandle').on('submit'...
ATAU
$('form#formToHandle').submit(function(e) { e.preventDefault(); // do something });
$(document).on('submit','form#formToHandle',function(){ // do something like e.preventDefault(); });
ATAU
$(document).ready(function() { console.log( "Ready, Document loaded!" ); // all your other code listening to the document to load $("#formToHandle").on("submit", function(){ // do something }) });
ATAU
$(function() { // <- this is shorthand version console.log( "Ready, Document loaded!" ); // all your other code listening to the document to load $("#formToHandle").on("submit", function(){ // do something }) });
sumber
.live()
tidak digunakan lagi sejak jQuery 1.7 dan dihapus sejak 1.9. Gunakan.on()
sebagai gantinya.Halo mencari solusi untuk membuat formulir Ajax berfungsi dengan Google Tag Manager (GTM), pengembalian salah mencegah penyelesaian dan mengirimkan aktivasi acara secara real time di solusi analitik google adalah mengubah pengembalian palsu oleh e.preventDefault () ; yang bekerja dengan benar mengikuti kode:
$("#Contact-Form").submit(function(e) { e.preventDefault(); ... });
sumber
e.preventDefault () berfungsi dengan baik hanya jika Anda tidak memiliki masalah pada javascripts Anda, periksa javascripts Anda jika e.preventDefault () tidak berfungsi kemungkinan beberapa bagian lain dari JS Anda tidak berfungsi juga
sumber
Saya mengalami masalah serupa. Masalahnya bagi saya adalah file JS dimuat sebelum rendering DOM terjadi. Jadi pindahkan Anda
<script>
ke akhir<body>
tag.atau gunakan penundaan.
<script defer src="">
jadi yakinlah
e.preventDefault()
harus bekerja.sumber