Saya telah melihat-lihat dokumen jQuery dan saya pikir kita bisa melakukan ini dalam satu baris menggunakan penyeleksi :
$("#myForm :input[value!='']").serialize() // does the job!
Jelas #myForm mendapatkan elemen dengan id "myForm" tetapi yang kurang jelas bagi saya pada awalnya adalah bahwa karakter spasi diperlukan antara #myForm dan: input karena ini adalah operator turunan .
: input cocok dengan semua elemen input, textarea, pilih dan tombol.
[nilai! = ''] adalah atribut yang tidak sama dengan filter. Yang aneh (dan membantu) adalah bahwa semua: tipe elemen input memiliki atribut nilai bahkan memilih dan kotak centang dll.
Akhirnya untuk juga menghapus masukan yang nilainya adalah '.' (seperti yang disebutkan dalam pertanyaan):
$("#myForm :input[value!=''][value!='.']").serialize()
Dalam kasus ini penjajaran, yaitu menempatkan dua selektor atribut di samping satu sama lain , berarti DAN. Menggunakan koma menyiratkan OR. Maaf jika itu jelas bagi orang-orang CSS!
[value]
cocokkan elemen apa pun dengan atribut yangvalue
ada , termasuk yang memiliki nilai kosong (atau tidak ada). Hal ini disebabkan oleh bug di versi jQuery sebelumnya yang membuat ketidakkonsistenan antara variasiinput[value]
dan:input[value]
. Ambil, misalnya<input value="foo"><input value=""><input value><input>
,; bug diilustrasikan di biola ini .