Saya memiliki masalah saat menggunakan tombol di dalam formulir. Saya ingin tombol itu memanggil fungsi. Memang, tetapi dengan hasil yang tidak diinginkan itu menyegarkan halaman.
Kode sederhana saya seperti ini
<form method="POST">
<button name="data" onclick="getData()">Click</button>
</form>
Pada mengklik tombol, fungsi dipanggil dengan halaman di-refresh, yang me-reset semua permintaan saya sebelumnya yang mempengaruhi halaman saat ini yang merupakan hasil dari permintaan sebelumnya.
Apa yang harus saya lakukan untuk mencegah penyegaran halaman?
javascript
html
bunkdeath
sumber
sumber
Jawaban:
Biarkan
getData()
kembali salah. Ini akan memperbaikinya.sumber
onclick
Fungsi harus kembali palsu, tidakgetData
.type="button"
benar-benar menangkap.Tambahkan
type="button"
ke tombol.Nilai default
type
untuk sebuah tombol adalahsubmit
, yang memposting sendiri formulir di case Anda dan membuatnya tampak seperti refresh.sumber
return false;
onclick:onclick="getData(); return false;"
Yang perlu Anda lakukan adalah meletakkan tag jenis dan membuat tombol ketik.
Itu memecahkan masalah
sumber
Masalahnya adalah itu memicu pengiriman formulir. Jika Anda membuat
getData
fungsireturn false
maka harus menghentikan formulir mengirimkan.Atau, Anda juga bisa menggunakan
preventDefault
metode objek acara:sumber
HTML
jQuery
sumber
alih-alih menggunakan tag tombol, gunakan tag input. Seperti ini,
sumber
button type='button'
Jika tombol Anda adalah "tombol" default, pastikan Anda menentukan atribut type, jika tidak, WebForm akan memperlakukannya sebagai submit secara default.
jika Anda menggunakan js lakukan seperti ini
sumber
Metode javascript untuk menonaktifkan tombol itu sendiri
Setelah semua bidang formulir memenuhi kriteria Anda, Anda dapat mengaktifkan kembali tombol
Menggunakan Jquery akan seperti ini
sumber
Untuk alasan apa pun di Firefox meskipun saya memiliki
return false;
danmyform.preventDefault();
dalam fungsi, itu menyegarkan halaman setelah fungsi berjalan. Dan saya tidak tahu apakah ini praktik yang baik, tetapi itu berhasil untuk saya, saya masukkanjavascript:this.preventDefault();
atribut action.Seperti yang saya katakan, saya mencoba semua saran lainnya dan mereka bekerja dengan baik di semua browser kecuali Firefox, jika Anda memiliki masalah yang sama, coba tambahkan acara cegah dalam atribut action baik
javascript:return false;
ataujavascript:this.preventDefault();
. Jangan coba-cobajavascript:void(0);
yang akan merusak kode Anda. Jangan tanya kenapa :-).Saya tidak berpikir ini adalah cara yang elegan untuk melakukannya, tetapi dalam kasus saya, saya tidak punya pilihan lain.
Memperbarui:
Jika Anda menerima kesalahan ... setelah ajax diproses, maka hapus tindakan atribut dan dalam
onsubmit
atribut, jalankan fungsi Anda diikuti dengan pengembalian salah:onsubmit="functionToRun(); return false;"
Saya tidak tahu mengapa semua masalah dengan Firefox ini, tetapi saya harap ini berhasil.
sumber
Fungsi pengembalian tidak berfungsi dalam semua kasus. Saya mencoba ini:
Itu tidak berhasil untuk saya.
Saya mencoba mengembalikan false di dalam fungsi dan itu berhasil untuk saya.
sumber
Saya menghadapi masalah yang sama. Masalahnya dengan
onclick
fungsi. Seharusnya tidak ada masalah dengan fungsigetData
. Ini bekerja dengan membuatonclick
fungsi return false.sumber
Ini adalah solusi terbaik:
Catatan: Kode saya sangat sederhana.
sumber
Anda bisa menggunakan ajax dan jquery untuk menyelesaikan masalah ini:
sumber