更改/获取CheckBox的检查状态

Sta*_*tan 50 html javascript

我只想用JavaScript获取/更改CheckBox的值.并不是说我不能使用jQuery.我尝试过这样的东西,但它不起作用.

JavaScript函数

    function checkAddress()
    {
        if (checkAddress.checked == true)
        {
            alert("a");
        }
    }
Run Code Online (Sandbox Code Playgroud)

HTML

<input type="checkbox" name="checkAddress" onchange="checkAddress()" />
Run Code Online (Sandbox Code Playgroud)

Tim*_*own 81

onclick相反,使用将工作.从理论上讲,它可能无法捕捉通过键盘进行的更改,但是当通过键盘检查时,所有浏览器似乎都会触发事件.

您还需要将复选框传递给函数:

function checkAddress(checkbox)
{
    if (checkbox.checked)
    {
        alert("a");
    }
}
Run Code Online (Sandbox Code Playgroud)

HTML

<input type="checkbox" name="checkAddress" onclick="checkAddress(this)" />
Run Code Online (Sandbox Code Playgroud)

  • 我不认为他的问题是事件的类型:正如你提到的onchange更具包容性而不是onclick.问题是没有名为`checkAddress`的对象带有`checked`属性.最有可能的是,`checkAddress`将作为函数本身解析,因为它也被命名为.只是在HTML中给出一个名称属性不会创建一个在Javascript中命名的变量.传递'this'或者下面答案中的任何选项应该可以解决问题. (2认同)
  • 对于那些使用像 React 这样的框架在回调中将应用程序上下文绑定到“this”的人,你应该使用 `checkbox.target.checked` 而不是 `checkbox.checked` (2认同)

Kev*_*vin 18

您需要在使用前检索复选框.

给复选框一个id属性以检索它,document.getElementById(..)然后检查其当前状态.

例如:

function checkAddress()
{
    var chkBox = document.getElementById('checkAddress');
    if (chkBox.checked)
    {
        // ..
    }
}
Run Code Online (Sandbox Code Playgroud)

然后您的HTML将如下所示:

<input type="checkbox" id="checkAddress" name="checkAddress" onclick="checkAddress()"/>
Run Code Online (Sandbox Code Playgroud)

(也改变了onchangeonclick.不能在IE工作得非常好 :).


Ped*_*usa 9

我知道这是一个非常晚的回复,但这个代码更灵活,应该帮助像我这样的后来者.

function copycheck(from,to) {
//retrives variables "from" (original checkbox/element) and "to" (target checkbox) you declare when you call the function on the HTML.

    if(document.getElementById(from).checked==true) 
    //checks status of "from" element. change to whatever validation you prefer.
        {
            document.getElementById(to).checked=true;
             //if validation returns true, checks target checkbox
        }
    else
        {   
            document.getElementById(to).checked=false; 
             //if validation returns true, unchecks target checkbox
        }
}
Run Code Online (Sandbox Code Playgroud)

HTML就像是

<input type="radio" name="bob" onclick="copycheck('from','to');" />
Run Code Online (Sandbox Code Playgroud)

其中"from"和"to"是您希望复制"to"的元素"from"的相应ID.按原样,它可以在复选框之间工作,但是只要在从html事件调用发送变量时正确定义了"to"(作为要操作的复选框),就可以输入任何你想要的ID和任何你想要的条件.

请注意,正如SpYk3HH所说,默认情况下,您要使用的目标是一个数组.使用Web开发人员工具栏中的"显示元素信息"工具将帮助您找到相应复选框的完整ID.

希望这可以帮助.

  • 你可以把它减少到`document.getElementById(to).checked = document.getElementById(from).checked;`. (4认同)

SpY*_*3HH 5

我知道这是迟到的信息,但在jQuery中,使用.checked很容易!如果你的元素是这样的:

<td>
    <input type="radio" name="bob" />
</td>
Run Code Online (Sandbox Code Playgroud)

您可以轻松地获取/设置检查状态:

$("td").each(function()
{
    $(this).click(function()
    {
        var thisInput  = $(this).find("input[type=radio]");
        var checked = thisInput.is(":checked");
        thisInput[0].checked = (checked) ?  false : true;
    }
});
Run Code Online (Sandbox Code Playgroud)

秘诀是使用"[0]"数组索引标识符,它是jquery对象的ELEMENT!请享用!