Lebih
Mendapatkan bentuk field input menggunakan jQuery?
Saya punya form dengan banyak field input.
Ketika saya menangkap menyerahkan formulir acara dengan jQuery, adalah mungkin untuk mendapatkan semua field input itu dalam bentuk array asosiatif?
404
23
Terima kasih untuk tip dari Simon_Weaver, berikut adalah cara lain anda bisa melakukannya, dengan menggunakan
serializeArray
:Perhatikan bahwa potongan ini akan gagal di
<memilih beberapa>
elemen.Tampak bahwa baru HTML 5 form input don't bekerja dengan
serializeArray
di jQuery versi 1.3. Ini bekerja pada versi 1.4+Terlambat ke pesta pada pertanyaan ini, tapi ini bahkan lebih mudah:
The jquery.form plugin dapat membantu dengan apa yang orang lain cari yang berakhir pada pertanyaan ini. I'm tidak yakin jika ini langsung melakukan apa yang anda inginkan atau tidak.
Ada juga serializeArray fungsi.
Kadang-kadang saya menemukan satu pada satu waktu adalah lebih berguna. Untuk itu, ada's ini:
Unsur-unsur variabel ini akan berisi semua masukan, memilih, dihapus saja dan fieldsets dalam bentuk.
Berikut ini adalah solusi lain, dengan cara ini anda dapat mengambil semua data tentang bentuk dan menggunakannya dalam serverside panggilan atau sesuatu.
Anda kemudian dapat menggunakan ini dengan panggilan ajax:
Semoga ini berguna bagi anda :)
Punya masalah yang sama dengan sedikit twist dan saya pikir saya'd membuang ini. Saya memiliki sebuah fungsi callback yang akan di bentuk jadi aku punya sebuah objek form yang sudah dan tidak't mudah varian
$('form:input')
. Bukannya aku datang dengan:Yang mirip tetapi tidak identik situasi, tapi saya menemukan thread ini sangat berguna dan pikir saya'd tuck ini pada akhir dan berharap orang lain menemukan itu berguna.
jQuery's
serializeArray
tidak termasuk bidang cacat, jadi jika anda perlu orang juga, cobalah:Asosiatif? Bukan tanpa beberapa pekerjaan, tetapi anda dapat menggunakan generic penyeleksi:
Tampaknya aneh bahwa tak seorang pun memiliki upvoted atau mengusulkan solusi ringkas untuk mendapatkan data daftar. Hampir setiap bentuk akan menjadi satu-dimensi objek.
Kelemahan dari solusi ini adalah, tentu saja, bahwa anda singleton benda akan memiliki untuk dapat diakses di [0] indeks. Tapi IMO yang's cara yang lebih baik daripada menggunakan salah satu dari selusin-line solusi pemetaan.
Don't lupa centang dan tombol radio -
http://api.jquery.com/serializearray/
Hal ini juga dapat dilakukan tanpa jQuery menggunakan XMLHttpRequest Level 2 FormData objek
http://www.w3.org/TR/2010/WD-XMLHttpRequest2-20100907/#the-formdata-interface
Solusi yang sama seperti yang diberikan oleh nickf, tapi dengan array input nama diperhitungkan misalnya
<input type="text" name="array[]" />
Aku punya masalah yang sama dan diselesaikan dengan cara yang berbeda.
Ia mengembalikan nilai semua field input. Anda bisa mengubah
$(':input')
untuk lebih spesifik.Ini bagian dari kode yang akan bekerja bukan nama, masukkan email anda di kolom formulir nama
Jika anda perlu untuk mendapatkan beberapa nilai dari input dan anda're menggunakan []'s untuk menentukan input dengan beberapa nilai, anda dapat menggunakan berikut:
Terinspirasi oleh jawaban dari Tombak Bergegas dan Simon_Weaver, ini adalah favorit saya solusi.
Output adalah array dari objek, misalnya
Dengan kode di bawah ini,
hasil akhir akan
Saya menggunakan kode ini tanpa setiap loop:
Saya harap ini membantu, serta termudah.
Ketika saya diperlukan untuk melakukan panggilan ajax dengan semua kolom formulir, saya punya masalah dengan :input selector kembali semua kotak centang apakah atau tidak mereka diperiksa. Saya menambahkan pemilih baru untuk hanya mendapatkan submit-mampu membentuk elemen-elemen:
penggunaan:
I've tidak diuji dengan beberapa pilih kotak belum sekalipun tetapi bekerja untuk mendapatkan semua kolom formulir dengan cara standar yang akan menyerahkan.
Saya menggunakan ini ketika menyesuaikan pilihan produk di situs OpenCart untuk memasukkan kotak centang dan bidang teks serta standar pilih jenis kotak.