Saya telah mencari melalui banyak halaman, tetapi tidak dapat menemukan masalah saya, jadi saya harus membuat posting.
Saya memiliki formulir yang memiliki tombol kirim, dan ketika dikirim, saya ingin TIDAK menyegarkan ATAU mengalihkan. Saya hanya ingin jQuery melakukan suatu fungsi.
Berikut formulirnya:
<form id="contactForm">
<fieldset>
<label for="Name">Name</label>
<input id="contactName" type="text" />
</fieldset>
<fieldset>
<label for="Email">Email</label>
<input id="contactEmail" type="text" />
</fieldset>
<fieldset class="noHeight">
<textarea id="contactMessage" cols="20"></textarea>
<input id="contactSend" class="submit" type="submit" onclick="sendContactForm()" />
</fieldset>
</form>
<small id="messageSent">Your message has been sent.</small>
Dan inilah jQuery:
function sendContactForm(){
$("#messageSent").slideDown("slow");
setTimeout('$("#messageSent").slideUp();$("#contactForm").slideUp("slow")', 2000);
}
Saya sudah mencoba dengan dan tanpa elemen tindakan di formulir, tapi tidak tahu apa yang saya lakukan salah. Yang lebih mengganggu saya adalah saya memiliki contoh yang melakukannya dengan sempurna: Halaman Contoh
Jika Anda ingin melihat masalah saya secara langsung, kunjungi stormink.net (situs saya) dan periksa bilah sisi yang bertuliskan "Kirim saya dan email" dan "Berlangganan RSS". Keduanya adalah formulir yang saya coba agar ini berfungsi.
sumber
false
mencegah pengiriman?Sini:
Alih-alih menggunakan event onClick, Anda akan menggunakan bind sebuah event handler 'click' menggunakan jQuery ke tombol submit (atau tombol apa saja), yang akan mengambil submitClick sebagai callback. Kami meneruskan acara ke callback untuk memanggil preventDefault , yang akan mencegah klik mengirimkan formulir.
sumber
$('#contactSend').click(function(e) { submitClick(e) });
atau$('#contactSend').click(submitClick);
Di tag pembuka formulir Anda, setel atribut tindakan seperti ini:
sumber
myForm.submit();
sesegera mungkin, tetapi kemudian Anda memuat halaman dua kali.e.preventDefault()
atau direturn false
dalam fungsi pengiriman. stackoverflow.com/questions/19454310/…Sepertinya Anda melewatkan file
return false
.sumber
Jika Anda ingin melihat kesalahan browser default ditampilkan , misalnya, yang dipicu oleh atribut HTML (muncul sebelum perlakuan JS kode klien):
Anda harus menggunakan
submit
acara tersebut, bukanclick
acara tersebut. Dalam hal ini popup akan secara otomatis ditampilkan meminta " Harap isi bidang ini ". Bahkan denganpreventDefault
:Seperti yang disebutkan sebelumnya ,
return false
akan menghentikan penyebaran (yaitu jika ada lebih banyak penangan yang dilampirkan ke pengiriman formulir, mereka tidak akan dieksekusi), tetapi, dalam kasus ini, tindakan yang dipicu oleh browser akan selalu dijalankan terlebih dahulu. Bahkan dengan areturn false
di akhir.Jadi, jika Anda ingin menyingkirkan pop-up default ini , gunakan
click
acara di tombol kirim:sumber
Solusi alternatifnya adalah dengan tidak menggunakan tag form dan menangani event klik pada tombol submit melalui jquery. Dengan cara ini tidak akan ada penyegaran halaman tetapi pada saat yang sama ada sisi negatifnya yaitu tombol "enter" untuk pengiriman tidak akan berfungsi dan juga di ponsel Anda tidak akan mendapatkan tombol buka (gaya di beberapa ponsel). Jadi tetap gunakan tag formulir dan gunakan jawaban yang diterima.
sumber