Saya memiliki rutinitas javascript yang melakukan tindakan pada sekelompok kotak centang, tetapi tindakan terakhir saya ingin mengatur kotak centang yang diklik menjadi dicentang atau tidak dicentang berdasarkan apakah pengguna memeriksa kotak atau tidak mencentang.
Sayangnya, setiap kali saya memeriksa apakah kotak itu dicentang atau tidak dicentang, ia mengembalikan "on &" yang menunjukkan bahwa pengguna selalu mencentang kotak! Bantuan apa pun akan dihargai, saya juga telah menyertakan javascript.
// Uncheck all the checkboxs with the same Tax Credit
for (i=0; i<arrChecks.length; i++)
{
var attribute = arrChecks[i].getAttribute("xid")
if (attribute == elementName)
{
// if the current state is checked, unchecked and vice-versa
if (arrChecks[i].value == "on") // <-- This is always returning true, even if the box is being unchecked
{
arrChecks[i].checked = 1;
} else {
arrChecks[i].checked = 0;
}
} else {
arrChecks[i].checked = 0;
}
}
Anda harus mengevaluasi terhadap properti yang dicentang dari elemen kotak centang.
for (i=0; i<arrChecks.length; i++)
{
var attribute = arrChecks[i].getAttribute("xid")
if (attribute == elementName)
{
// if the current state is checked, unchecked and vice-versa
if (arrChecks[i].checked)
{
arrChecks[i].checked = false;
} else {
arrChecks[i].checked = true;
}
} else {
arrChecks[i].checked = false;
}
}
Atribut value
dari sebuah checkbox
adalah apa yang Anda atur:
<input type='checkbox' name='test' value='1'>
Jadi, ketika seseorang mencentang kotak itu, server menerima variabel bernama test
dengan value
dari 1
- apa yang ingin Anda periksa bukanlah value
-nya (yang tidak akan pernah berubah, apakah itu dicentang atau tidak) tetapi status checked
dari kotak centang.
Jadi, jika Anda mengganti kode ini:
if (arrChecks[i].value == "on")
{
arrChecks[i].checked = 1;
} else {
arrChecks[i].checked = 0;
}
Dengan ini:
arrChecks[i].checked = !arrChecks[i].checked;
Seharusnya bisa bekerja. Anda harus menggunakan true
dan false
bukan 0
dan 1
untuk ini.
Saya tidak yakin apa masalahnya, tetapi saya cukup yakin ini akan memperbaikinya.
for (i=0; i<arrChecks.length; i++)
{
var attribute = arrChecks[i].getAttribute("xid")
if (attribute == elementName)
{
if (arrChecks[i].checked == 0)
{
arrChecks[i].checked = 1;
} else {
arrChecks[i].checked = 0;
}
} else {
arrChecks[i].checked = 0;
}
}