Saya memiliki select
bidang formulir yang ingin saya tandai sebagai "readonly", karena di pengguna tidak dapat mengubah nilai, tetapi nilainya masih dikirim dengan formulir. Menggunakan disabled
atribut mencegah pengguna mengubah nilai, tetapi tidak mengirimkan nilai dengan formulir.
The readonly
atribut hanya tersedia untuk input
dan textarea
bidang, tapi itu pada dasarnya apa yang saya inginkan. Apakah ada cara untuk membuatnya bekerja?
Dua kemungkinan yang saya pertimbangkan meliputi:
- Alih-alih menonaktifkan
select
, nonaktifkan semuaoption
dan gunakan CSS untuk mengubah pilihan sehingga tampak seperti dinonaktifkan. - Tambahkan event handler klik ke tombol kirim sehingga memungkinkan semua menu dropdown yang dinonaktifkan sebelum mengirimkan formulir.
javascript
html
css
forms
html-select
Marquis Wang
sumber
sumber
trafalmadorian
workest adalah yang terbaik. Ini menonaktifkan semua input yang tidak dipilih. Ini juga akan berfungsi jika itu dipilih memiliki beberapa opsi diaktifkan.$('#toSelect')find(':not(:selected)').prop('disabled',true);
Jawaban:
Di mana
select_name
nama yang biasanya Anda berikan<select>
.Pilihan lain.
Sekarang dengan yang ini, saya perhatikan bahwa tergantung pada server web apa yang Anda gunakan, Anda mungkin harus memasukkan
hidden
input baik sebelum, atau setelah<select>
.Jika ingatan saya benar, dengan IIS, Anda letakkan sebelumnya, dengan Apache Anda letakkan setelah itu. Seperti biasa, pengujian adalah kunci.
sumber
Nonaktifkan bidang dan kemudian aktifkan sebelum formulir dikirimkan:
kode jQuery:
sumber
Saya sudah mencari solusi untuk ini, dan karena saya tidak menemukan solusi di utas ini saya lakukan sendiri.
Sederhana, Anda hanya mengaburkan bidang ketika Anda fokus padanya, sesuatu seperti menonaktifkannya, tetapi Anda benar-benar mengirim datanya.
sumber
Saya dihadapkan dengan skenario yang sedikit berbeda, yaitu saya hanya ingin tidak mengizinkan pengguna untuk mengubah nilai yang dipilih berdasarkan kotak pilih sebelumnya. Apa yang akhirnya saya lakukan hanya menonaktifkan semua opsi yang tidak dipilih lainnya di kotak pilih menggunakan
sumber
attr
harus diubah denganprop
, akan terlihat seperti$('#toSelect')find(':not(:selected)').prop('disabled',true);
Solusi yang sama disarankan oleh Tres tanpa menggunakan jQuery
Ini mungkin membantu seseorang memahami lebih banyak, tetapi jelas kurang fleksibel daripada jQuery.
sumber
getElementsByTagName('select')
?itu tidak berfungsi dengan: pemilih input untuk bidang pilih, gunakan ini:
sumber
Saya menggunakan kode berikutnya untuk opsi menonaktifkan dalam pilihan
sumber
Cara termudah yang saya temukan adalah membuat fungsi javascript kecil yang diikat ke formulir Anda:
dan Anda menyebutnya di formulir Anda di sini:
Atau Anda dapat menyebutnya di fungsi yang Anda gunakan untuk memeriksa formulir Anda :)
sumber
Cukup tambahkan baris sebelum mengirim.
sumber
Atau gunakan beberapa JavaScript untuk mengubah nama pilih dan mengaturnya untuk dinonaktifkan. Dengan cara ini pilih masih dikirimkan, tetapi menggunakan nama yang tidak Anda periksa.
sumber
Saya menyiapkan plugin cepat (hanya Jquery), yang menyimpan nilai dalam bidang data saat input dinonaktifkan. Ini hanya berarti selama bidang dinonaktifkan secara terprogram melalui jquery menggunakan .prop () atau .attr () ... lalu mengakses nilainya dengan .val (), .serialize () atau .serializeArra () akan selalu mengembalikan nilai bahkan jika dinonaktifkan :)
Steker tak tahu malu: https://github.com/Jezternz/jq-disabled-inputs
sumber
Berdasarkan solusi dari Jordan, saya membuat fungsi yang secara otomatis membuat input tersembunyi dengan nama yang sama dan nilai yang sama dari pilih yang Anda inginkan menjadi tidak valid. Parameter pertama bisa berupa id atau elemen jquery; yang kedua adalah parameter opsional Boolean di mana "true" menonaktifkan dan "false" memungkinkan input. Jika dihilangkan, parameter kedua mengalihkan pemilihan antara "diaktifkan" dan "dinonaktifkan".
sumber
Saya menemukan solusi yang bisa diterapkan: hapus semua elemen kecuali yang dipilih. Anda kemudian dapat mengubah gaya menjadi sesuatu yang terlihat dinonaktifkan juga. Menggunakan jQuery:
sumber
sumber
Pilihan lain adalah menggunakan atribut readonly.
Dengan hanya baca nilai masih dikirimkan, bidang input berwarna abu-abu dan pengguna tidak dapat mengeditnya.
Edit:
Dikutip dari http://www.w3.org/TR/html401/interact/forms.html#adef-readonly :
Ketika dikatakan elemen mungkin berhasil, itu berarti dapat diajukan, seperti yang dinyatakan di sini: http://www.w3.org/TR/html401/interact/forms.html#successful-controls
sumber