Kebutuhannya sederhana, ada banyak checkbox, tapi hanya bisa memilih satu saja.
Misalnya kita punya tabel data, tiap baris ada checkbox, hanya saja dibatasi hanya ada satu yang bisa dicentang. Saat satu baris dicentang (checked), maka yang lain otomatis dihilangkan centangnya (unchecked).
// function to uncheck other checkboxes using javascript only
function uncheckOther(obj) {
if (obj.checked) {
var inputs = document.getElementsByTagName("input");
for(var i = 0; i < inputs.length; i++) {
inputs[i].checked = false;
}
obj.checked = true;
}
}
Terus di tag checkbox-nya panggil fungsi tersebut:
<input type="checkbox" id='test1' value="abc" onclick="uncheckOther(this)">
Sebenarnya kalau di halaman web biasa, aku bisa mengganti checkbox dengan button atau link di tiap barisnya, langsung ada ID. Masalahnya, pas aku coba pakai ini di Visualforce page (Salesforce) aku mengalami kesulitan. Sulit untuk membuat tombol di tiap row yang bisa langsung nyambung ke fungsi tertentu, tanpa banyak memakai JS. Meski ada alternatif param, tapi tampaknya merepotkan.
Jadi aku memilih pendekatan ini saja, membuat checkbox di tiap row, sementara tombolnya adalah] commandButton yang lebih mudah nyambungin ke action dengan fungsi di Apex.
Oh ya, kalau pakai JQuery mungkin bisa lebih sederhana seperti ini
$(["input[type=checkbox]:checked").removeAttr('checked');
$(obj).attr('checked', 'checked');
Comments