Javascript, чтобы проверить, проверяется или не установлен флажок
У меня есть подпрограмма javascript, которая выполняет действия над группой флажков, но последнее действие, которое я хочу установить, чтобы щелкнуть флажок для проверки или снятия флажка, зависит от того, был ли пользователь установлен флажок или снят флажок.
К сожалению, каждый раз, когда я проверяю, проверяется или не проверяется, он возвращает "on", указывающий, что пользователь всегда проверяет флажок! Любая помощь будет оценена, я также включил 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;
}
}
Ответы
Ответ 1
Вы должны оценивать не проверенное свойство элемента checkbox.
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;
}
}
Ответ 2
Атрибут value
для checkbox
- это то, что вы установили:
<input type='checkbox' name='test' value='1'>
Поэтому, когда кто-то проверяет это поле, сервер получает переменную с именем test
с value
of 1
- то, что вы хотите проверить, это не value
(это никогда не изменится, независимо от того, он проверен или нет), но статус checked
этого флажка.
Итак, если вы замените этот код:
if (arrChecks[i].value == "on")
{
arrChecks[i].checked = 1;
} else {
arrChecks[i].checked = 0;
}
При этом:
arrChecks[i].checked = !arrChecks[i].checked;
Он должен работать. Вы должны использовать true
и false
вместо 0
и 1
для этого.
Ответ 3
Чтобы переключить флажок, или вы можете использовать
element.checked = !element.checked;
чтобы вы могли использовать
if (attribute == elementName)
{
arrChecks[i].checked = !arrChecks[i].checked;
} else {
arrChecks[i].checked = false;
}
Ответ 4
function enter_comment(super_id) {
if (!(document.getElementById(super_id).checked)) {
alert('selected checkbox is unchecked now')
} else {
alert('selected checkbox is checked now');
}
}
<input type="checkbox" name="a" id="1" value="1" onclick="enter_comment(this.value)" />
<input type="checkbox" name="b" id="2" value="2" onclick="enter_comment(this.value)" />
Ответ 5
function CHeck(){
var ChkBox = document.getElementById("CheckBox1");
alert(ChkBox.Checked);
}
<asp:CheckBox ID="CheckBox1" runat="server" onclick="CHeck()" />
Ответ 6
Я не уверен, в чем проблема, но я уверен, что это исправит.
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;
}
}
Ответ 7
Также убедитесь, что вы тестируете его как в firefox, так и в IE. Есть некоторые неприятные ошибки с JS манипулировать флажками.