Подтвердить что ты не робот

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;
    }
} 
4b9b3361

Ответ 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 манипулировать флажками.