Saya memiliki halaman di mana tipe input selalu bervariasi, dan saya perlu mendapatkan nilai tergantung pada tipe input. Jadi, jika jenisnya adalah radio, saya harus mendapatkan yang dicentang, dan jika itu adalah kotak centang, saya perlu sekarang yang dicentang, dan jika itu adalah drop-down saya perlu tahu mana yang dipilih, dan saya jika itu adalah a text / textarea Saya perlu tahu nilainya.
Adakah yang tahu bagaimana melakukannya?
Jawaban:
EDIT 1 Feb 2013. Karena popularitas jawaban ini dan perubahan jQuery di versi 1.9 (dan 2.0) mengenai properti dan atribut, saya menambahkan beberapa catatan dan biola untuk melihat cara kerjanya saat mengakses properti / atribut pada input, tombol dan beberapa pilihan. Biola di sini: http://jsfiddle.net/pVBU8/1/
dapatkan semua input:
dapatkan semua jenis input:
dapatkan nilainya:
CATATAN: .val () BUKAN sama dengan: diperiksa untuk jenis-jenis di mana yang relevan. menggunakan:
EDIT 1 Feb 2013 - re: jQuery 1.9 menggunakan prop () bukan attr () karena attr tidak akan mengembalikan nilai yang tepat untuk properti yang telah berubah.
atau sederhana
untuk mendapatkan nilai cek - apa pun itu saat ini. atau cukup gunakan tanda ': dicentang' jika Anda hanya menginginkan yang dicentang.
EDIT: Ini cara lain untuk mendapatkan tipe:
EDIT2: Perhatikan bahwa bentuk:
ditangguhkan
yang keduanya sama dengan:
tetapi "input" diinginkan sehingga hanya mendapat input dan tidak menggunakan universal '* "ketika bentuk
$(':radio')
yang digunakan sama dengan$('*:radio');
EDIT 19 Ags 2015: preferensi untuk
$('input[type=radio]');
harus digunakan seperti itu kemudian memungkinkan browser modern untuk mengoptimalkan pencarian input radio.EDIT 1 Feb 2013 per komentar kembali: pilih elemen @dariomac
akan mengembalikan "select-one" atau "select-multiple" tergantung pada atribut "multiple" dan
mengembalikan yang sama untuk pemilihan pertama jika ada. dan
akan mengembalikan jenisnya jika ada atau "melolong" jika tidak.
mengembalikan properti yang pertama di DOM jika ada atau "tidak terdefinisi" jika tidak ada.
mengembalikan tipe yang pertama jika ada atau kesalahan jika tidak ada.
sumber
allInputs.attr('type');
hanya akan mendapatkan tipe input elemen pertama yaitu.allInputs[0].attr('type');
jika ada lebih dari satu elemen dalam koleksi. Hal yang sama berlaku untukallInputs.val();
Jika Anda ingin melakukan sesuatu dengan jenis atau nilai setiap elemen, Anda harus melakukan sesuatu sepertiallInputs.each(function(){ var type = $(this).attr('type'); var val = $(this).val() });
Anda dapat melakukan hal berikut:
sumber
Jika yang Anda katakan adalah bahwa Anda ingin mendapatkan semua input di dalam formulir yang memiliki nilai tanpa khawatir tentang tipe input, coba ini:
Contoh: http://jsfiddle.net/nfLfa/
Sekarang Anda harus memiliki satu set elemen input yang memiliki beberapa nilai.
Anda bisa meletakkan nilai dalam array:
Atau Anda bisa membuat cerita bersambung:
sumber
sumber
sumber
Tempat terbaik untuk mulai mencari adalah http://api.jquery.com/category/selectors/
Ini akan memberi Anda satu set contoh yang baik.
Pada dasarnya pemilihan elemen dalam DOM dilakukan dengan menggunakan penyeleksi CSS jadi jika Anda berpikir untuk mendapatkan elemen dengan id Anda akan ingin menggunakan $ ('# elementId'), jika Anda ingin semua tag input gunakan $ ('input') dan akhirnya bagian yang saya pikir Anda akan inginkan jika Anda ingin semua tag input dengan jenis kotak centang gunakan $ ('input, [type = checkbox])
Catatan: Anda akan menemukan sebagian besar nilai yang Anda inginkan ada pada atribut sehingga pemilih css untuk atribut adalah: [attributeName = value]
Hanya karena Anda meminta dropdown sebagaimana diaplikasikan ke listbox, coba yang berikut ini:
Kode berasal dari memori, jadi silakan mencari kesalahan kecil
sumber
Komentar:
Saya berasumsi, bahwa ada tepat satu elemen bentuk, yang dapat berupa textarea, kolom input, form pilih, satu set tombol radio atau satu kotak centang (Anda harus memperbarui kode saya jika Anda memerlukan lebih banyak kotak centang).
Elemen yang dimaksud tinggal di dalam elemen dengan ID
container
(untuk menghapus ambiguitas dengan elemen lain di halaman).Kode kemudian akan mengembalikan nilai elemen pencocokan pertama yang ditemukannya. Karena saya menggunakan
:checked
dan seterusnya, ini harus selalu menjadi nilai tepat dari apa yang Anda cari.sumber
Tampaknya fungsi attr semakin ditinggalkan
sumber
Dalam aplikasi saya, saya berakhir dengan dua elemen berbeda yang memiliki id yang sama (buruk). Satu elemen adalah div dan yang lainnya merupakan input. Saya mencoba untuk meringkas input saya dan butuh beberapa saat untuk mewujudkan id duplikat. Dengan menempatkan jenis elemen yang saya inginkan di depan #, saya dapat mengambil nilai elemen input dan membuang div:
Saya harap ini membantu.
sumber
sumber
sumber