Kotak centang biasanya mewakili data biner yang disimpan dalam database sebagai nilai Ya / Tidak, Y / N atau 1/0. Kotak centang HTML memiliki sifat buruk untuk mengirim nilai ke server hanya jika kotak centang dicentang! Itu berarti bahwa skrip server di situs lain harus mengetahui terlebih dahulu apa saja kotak centang yang mungkin pada halaman web agar dapat menyimpan nilai-nilai positif (dicentang) atau negatif (tidak dicentang). Sebenarnya hanya nilai negatif yang menjadi masalah (ketika pengguna menghapus centang sebelumnya (pra) nilai yang diperiksa - bagaimana server dapat mengetahui hal ini ketika tidak ada yang dikirim jika tidak tahu sebelumnya bahwa nama ini harus dikirim). Jika Anda memiliki skrip sisi server yang secara dinamis membuat skrip UPDATE ada masalah karena Anda tidak tahu semua kotak centang harus diterima untuk menetapkan nilai Y untuk dicentang dan nilai N untuk yang tidak dicentang (tidak diterima).
Karena saya menyimpan nilai 'Y' dan 'N' di database saya dan mewakilinya melalui kotak centang dicentang dan tidak dicentang di halaman, saya menambahkan bidang tersembunyi untuk setiap nilai (kotak centang) dengan nilai 'Y' dan 'N' kemudian menggunakan kotak centang hanya untuk visual representasi, dan gunakan cek fungsi JavaScript sederhana () untuk menetapkan nilai jika menurut pilihan.
<input type="hidden" id="N1" name="N1" value="Y" />
<input type="checkbox"<?php if($N1==='Y') echo ' checked="checked"'; ?> onclick="check(this);" />
<label for="N1">Checkbox #1</label>
gunakan satu JavaScript onclick listener dan fungsi panggilan cek () untuk setiap kotak centang di halaman web saya:
function check(me)
{
if(me.checked)
{
me.previousSibling.previousSibling.value='Y';
}
else
{
me.previousSibling.previousSibling.value='N';
}
}
Dengan cara ini nilai 'Y' atau 'N' selalu dikirim ke skrip sisi server, ia tahu bidang apa yang harus diperbarui dan tidak perlu konversi checbox "on" nilai menjadi 'Y' atau tidak menerima kotak centang ke 'N' '
CATATAN: spasi putih atau baris baru juga merupakan saudara kandung, jadi di sini saya perlu .previousSibling.previousSibling.value. Jika tidak ada ruang di antara hanya .previousSibling.value
Anda tidak perlu menambahkan onclick listener secara eksplisit seperti sebelumnya, Anda dapat menggunakan jQuery library untuk secara dinamis menambahkan listener klik dengan fungsi untuk mengubah nilai ke semua kotak centang di halaman Anda:
$('input[type=checkbox]').click(function()
{
if(this.checked)
{
$(this).prev().val('Y');
}
else
{
$(this).prev().val('N');
}
});