Saya memiliki formulir dengan tombol reset standar yang dikodekan sebagai berikut:
<input type="reset" class="button standard" value="Clear" />
Masalahnya adalah, bentuk kata adalah dari jenis multi-tahap, jadi jika pengguna mengisi tahap & kemudian kembali nanti, nilai-nilai 'ingat' untuk berbagai bidang tidak akan mengatur ulang ketika tombol Hapus diklik.
Saya berpikir bahwa melampirkan fungsi jQuery untuk mengulang semua bidang dan menghapusnya 'secara manual' akan melakukan trik. Saya sudah menggunakan jQuery dalam formulir, tetapi saya baru saja bangun dengan kecepatan & jadi saya tidak yakin bagaimana melakukannya, selain secara individual merujuk setiap bidang dengan ID, yang tampaknya tidak terlalu efisien.
TIA untuk bantuan apa pun.
not()
jika form Anda memiliki input tersembunyi.Jawaban:
diperbarui pada Maret 2012.
Jadi, dua tahun setelah saya awalnya menjawab pertanyaan ini saya kembali untuk melihat bahwa itu telah berubah menjadi kekacauan besar. Saya merasa sudah saatnya saya kembali ke sana dan membuat jawaban saya benar karena ini adalah + yang paling banyak diterima.
Sebagai catatan, jawaban Titi salah karena bukan apa yang diminta oleh pengirim aslinya - benar bahwa mungkin untuk mereset formulir menggunakan metode reset asli (), tetapi pertanyaan ini mencoba untuk menghapus formulir yang tidak diingat. nilai yang akan tetap dalam formulir jika Anda meresetnya dengan cara ini. Inilah sebabnya mengapa diperlukan reset "manual". Saya berasumsi kebanyakan orang akhirnya dalam pertanyaan ini dari pencarian Google dan benar-benar mencari metode reset (), tetapi tidak bekerja untuk kasus khusus yang dibicarakan OP.
Jawaban asli saya adalah ini:
Yang mungkin bekerja untuk banyak kasus, termasuk untuk OP, tetapi seperti yang ditunjukkan dalam komentar dan jawaban lain, akan menghapus elemen radio / kotak centang dari atribut nilai apa pun.
Jawaban yang lebih benar (tetapi tidak sempurna) adalah:
Menggunakan
:text
,:radio
, dll penyeleksi sendiri dianggap praktik buruk oleh jQuery karena mereka akhirnya mengevaluasi ke*:text
yang membuatnya memakan waktu lebih lama dari seharusnya. Saya lebih suka pendekatan daftar putih dan berharap saya telah menggunakannya dalam jawaban asli saya. Bagaimanapun, dengan menentukaninput
bagian pemilih, ditambah cache elemen formulir, ini akan membuatnya menjadi jawaban yang berkinerja terbaik di sini.Jawaban ini mungkin masih memiliki beberapa kelemahan jika standar orang untuk elemen terpilih bukan merupakan opsi yang memiliki nilai kosong, tetapi ini pasti sama generiknya dengan yang akan didapat dan ini perlu ditangani berdasarkan kasus per kasus .
sumber
.val('')
me - reset semua nilai''
bahkan jika nilai-nilai ini digunakan dalam tombol radio dan kotak centang. Jadi ketika saya menjalankan kode di atas saya kehilangan informasi berharga dari formulir, bukan hanya apa yang diinput pengguna.Dari http://groups.google.com/group/jquery-dev/msg/2e0b7435a864beea :
pengaturan
myinput.val('')
mungkin tidak meniru "reset" 100% jika Anda memiliki input seperti ini:Misalnya, memanggil
myinput.val('')
input dengan nilai default 50 akan mengaturnya ke string kosong, sedangkan panggilanmyform.reset()
akan mengatur ulang ke nilai awal 50.sumber
Ada masalah besar dengan jawaban yang diterima Paolo. Mempertimbangkan:
The
.val('')
garis juga akan menghapus semuavalue
's ditugaskan untuk kotak centang dan tombol radio. Jadi jika (seperti saya) Anda melakukan sesuatu seperti ini:Menggunakan jawaban yang diterima akan mengubah input Anda menjadi:
Ups - Saya menggunakan nilai itu!
Berikut adalah versi yang dimodifikasi yang akan menjaga nilai kotak centang dan radio Anda:
sumber
select
elemen. Apa bisa anda perbaiki ini?:text
,:password
, dll penyeleksi sendiri tanpa menentukaninput
bagian, jika tidak mengevaluasi ke*:text
yang berjalan melalui setiap elemen dalam dokumen bukan hanya<input>
tag denganinput:text
#myFormId
konteks yang diteruskan sebagai argumen kedua untuk$()
- yaitu$(':input', '#context')
- ini identik dengan$('#context').filter(':input')
Plugin jQuery
Saya membuat plugin jQuery sehingga saya dapat menggunakannya dengan mudah di mana saja saya membutuhkannya:
Jadi sekarang saya bisa menggunakannya dengan menelepon:
sumber
.prop("checked", false)
? stackoverflow.com/questions/5874652/prop-vs-attrMembersihkan formulir agak rumit dan tidak sesederhana kelihatannya.
Sarankan Anda menggunakan plugin formulir jQuery dan gunakan fungsinya clearForm atau resetForm . Itu menangani sebagian besar kasus sudut.
sumber
document.getElementById ('frm'). reset ()
sumber
Saya biasanya melakukan:
atau
sumber
Ini ada sesuatu untuk Anda mulai
Tentu saja, jika Anda memiliki kotak centang / tombol radio, Anda harus memodifikasi ini untuk memasukkannya juga dan mengatur
.attr({'checked': false});
sunting jawaban Paolo lebih ringkas. Jawaban saya lebih bertele-tele karena saya tidak tahu tentang
:input
pemilih, saya juga tidak berpikir tentang hanya menghapus atribut yang diperiksa.sumber
Pertimbangkan untuk menggunakan plugin validasi - hebat! Dan mengatur ulang formulir sederhana:
sumber
Saya menemukan ini bekerja dengan baik.
sumber
pada dasarnya tidak ada solusi yang diberikan membuat saya senang. seperti yang ditunjukkan oleh beberapa orang, mereka mengosongkan formulir alih-alih mengatur ulang.
namun, ada beberapa properti javascript yang membantu:
ini menyimpan nilai yang dimiliki suatu bidang saat halaman dimuat.
menulis plugin jQuery sekarang sepele: (untuk yang tidak sabar ... inilah demo http://jsfiddle.net/kritzikratzi/N8fEF/1/ )
plugin-code
pemakaian
beberapa catatan ...
$( "#container" ).resetValue()
tidak akan bekerja. selalu gunakan$( "#container :input" )
saja.sumber
Anda mungkin menemukan bahwa ini sebenarnya lebih mudah diselesaikan tanpa jQuery.
Dalam JavaScript biasa, ini sesederhana:
Saya mencoba untuk selalu ingat bahwa ketika kita menggunakan jQuery untuk meningkatkan dan mempercepat pengkodean kita, kadang-kadang itu tidak lebih cepat. Dalam kasus tersebut, seringkali lebih baik menggunakan metode lain.
sumber
Saya membuat sedikit variasi dari solusi bagus Francis Lewis . Apa yang tidak dilakukan solusinya adalah mengatur pilihan drop-down menjadi kosong. (Saya pikir ketika kebanyakan orang ingin "menghapus", mereka mungkin ingin membuat semua nilai kosong.) Yang ini melakukannya dengan
.find('select').prop("selectedIndex", -1)
.sumber
Saya biasanya menambahkan tombol reset tersembunyi ke formulir. bila diperlukan cukup: $ ('# reset'). klik ();
sumber
Modifikasi jawaban yang paling banyak dipilih untuk
$(document).ready()
situasi ini:sumber
Cukup gunakan
jQuery Trigger event
seperti ini:Ini akan mengatur ulang kotak centang, tombol radio, kotak teks, dll ... Pada dasarnya itu mengubah bentuk Anda ke keadaan default itu. Sederhananya bagian
#ID, Class, element
dalamjQuery
pemilih.sumber
ini bekerja untuk saya, pyrotex jawaban tidak mereset bidang pilih, ambil miliknya, ini edit saya:
sumber
Saya menggunakan solusi Paolo Bergantino yang sangat bagus tetapi dengan beberapa penyesuaian ... Khusus untuk bekerja dengan nama formulir, bukan id.
Sebagai contoh:
Sekarang ketika saya ingin menggunakannya, saya bisa melakukannya
Seperti yang Anda lihat, ini berfungsi dengan bentuk apa pun, dan karena saya menggunakan gaya css untuk membuat tombol, halaman tidak akan menyegarkan saat diklik. Sekali lagi terima kasih Paolo atas masukan Anda. Satu-satunya masalah adalah jika saya memiliki nilai default dalam formulir.
sumber
Saya menggunakan solusi di bawah ini dan itu berhasil untuk saya (mencampur javascript tradisional dengan jQuery)
sumber
Saya hanya perantara dalam PHP, dan sedikit malas untuk menyelami bahasa baru seperti JQuery, tetapi bukankah ini mengikuti solusi yang sederhana dan elegan?
Tidak dapat melihat alasan mengapa tidak memiliki dua tombol kirim, hanya dengan tujuan berbeda. Maka cukup:
Anda baru saja mendefinisikan kembali nilai Anda ke apa pun yang seharusnya menjadi default.
sumber
Metode yang saya gunakan pada formulir yang cukup besar (50 bidang) adalah dengan hanya memuat kembali formulir dengan AJAX, pada dasarnya membuat panggilan kembali ke server dan hanya mengembalikan bidang dengan nilai defaultnya. Ini dibuat jauh lebih mudah daripada mencoba untuk mengambil setiap bidang dengan JS dan kemudian mengaturnya ke nilai standarnya. Itu juga memungkinkan saya untuk menjaga nilai default di satu tempat - kode server. Di situs ini, ada juga beberapa default berbeda tergantung pada pengaturan untuk akun dan oleh karena itu saya tidak perlu khawatir tentang mengirim ini ke JS. Satu-satunya masalah kecil yang harus saya tangani adalah beberapa bidang saran yang memerlukan inisialisasi setelah panggilan AJAX, tetapi bukan masalah besar.
sumber
Semua jawaban ini baik tetapi cara termudah mutlak untuk melakukannya adalah dengan reset palsu, yaitu Anda menggunakan tautan dan tombol reset.
Cukup tambahkan beberapa CSS untuk menyembunyikan tombol reset asli Anda.
Dan kemudian pada tautan Anda tambahkan sebagai berikut
Semoga ini membantu! SEBUAH.
sumber
sumber
Di sini, dengan penyegaran untuk kotak centang dan pilih:
sumber
Saya mengalami masalah yang sama dan jabatan Paolo membantu saya, tetapi saya perlu menyesuaikan satu hal. Formulir saya dengan id advancedindexsearch hanya berisi bidang input dan mendapatkan nilai dari suatu sesi. Untuk beberapa alasan berikut ini tidak berfungsi untuk saya:
Jika saya memberi peringatan setelah ini, saya melihat nilai-nilai di mana dihapus dengan benar tetapi setelah itu di mana diganti lagi. Saya masih tidak tahu bagaimana atau mengapa tetapi baris berikut ini memang membantu saya:
sumber
Jawaban Paolo tidak memperhitungkan pemetik tanggal, tambahkan ini di:
sumber
Saya membuat sedikit perbaikan pada jawaban asli Paolo Bergantino
Dengan cara ini, saya bisa meneruskan elemen konteks ke fungsi. Saya dapat mengatur ulang seluruh formulir atau hanya kumpulan bidang tertentu, misalnya:
Plus, nilai default input dipertahankan.
sumber
di sini adalah solusi saya, yang juga berfungsi dengan tipe input html5 baru:
sumber
break
bawah inicheckbox
danradio
kasing. Tidak perlu untuk itu dalam posisi saat ini.Melengkapi jawaban yang diterima, jika Anda menggunakan plugin SELECT2, Anda perlu memanggil kembali script select2 untuk membuat perubahan, semua bidang select2:
sumber
sumber