Diposting pada July 20, 2007 | Awan: CakePHP, Programming | oleh : sunu wibirama.
Yah, akhirnya salah satu problem yang cukup mengganggu perjalanan TA ku bisa kuselesaikan, dengan sedikit script Javascript dan logika filtering yang tidak terlalu rumit. Bagaimana masalahnya ?
Sistem informasi yang sedang kukerjakan tidak jauh-jauh dari manajemen laboratorium. Dalam sistem tersebut, salah satu modul yang dibuat adalah modul pendaftaran praktikum, dengan tampilan seperti ini :
PRAKTIKUM A
[ ] Senin (08.00 - 10.00)
[ ] Rabu (08.00 - 10.00)
[ ] Jum’at (08.00 - 10.00)
PRAKTIKUM B
[ ] Selasa (08.00 - 10.00)
[ ] Sabtu (08.00 - 10.00)
dan seterusnya….
Pihak laboratorium menginginkan, dalam sekali pendaftaran, seorang praktikan bisa mendaftarkan dirinya pada satu atau lebih praktikum, dengan catatan, satu praktikum hanya diperbolehkan satu jadwal saja (misal : PRAKTIKUM A Senin (08.00 - 10.00)). Padahal, relasi antara tabel jadwal dan tabel praktikan adalah relasi N to N (sebagaimana tergambar pada artikel Memahami Bind dan Unbind).
Masalah utamanya adalah : bagaimana memanipulasi unsur checkbox, supaya ia bisa berlaku seperti radiobutton. Yup, checkbox lebih dinamis, fleksibel dan memiliki opsi-opsi yang memungkinkan seorang praktikan mendaftarkan dirinya pada satu atau lebih praktikum.
Akhirnya, pilihan jatuh pada seonggok script Javascript yang kusertakan di awal halaman :
<script language=”javascript”>
function ManageChkBoxes(form,selid,selalt) {
for (var ax=0; ax < form.elements.length; ax++) {
var elem = form.elements[ax];
if (elem.type == ‘checkbox’) {
if (elem.alt.match(selalt) == selalt){
if (elem.id.match(selid) == null)
{ elem.checked = false;}
}
}
}
return;
}
</script>
Penjelasan script di atas :
Fungsi ManageChkBoxes akan mengambil tiga parameter yang berasal dari atribut form checkbox, yakni form (dari form checkbox itu), selid (dari atribut id) dan selalt (dari atribut alt). Setelah dilakukan pengecekan dengan menggunakan perulangan, fungsi akan melakukan filtering, dan akan melakukan unchecked pada checkbox lain (dalam satu kelompok jadwal untuk nama praktikum yang sama) jika salah satu checkbox di kelompok tersebut sudah diisi.
Dengan kata lain, saat ada satu checkbox diisi, maka kosongkan checkbox yang lain, dan walhasil script ini membuat checkbox berperilaku seperti radiobutton, plus fasilitas yang memungkinkan semua checkbox tidak diisi (hal ini tidak akan terjadi jika kita menggunakan radiobutton).
Alhamdulillah ……
» Diposting pada awan CakePHP, Programming. Artikel lainnya pada awan ini: