复选框 "错误:无法获取属性“checked”的值:对象为null或未定义"

4

我正在尝试确定复选框是否被选中。这似乎相当简单。

<script type="text/Javascript">
function ValidateReqNum() {

        var zCheckBox = document.getElementById('chkAllJobs');

        if (zCheckBox.checked)
            alert("true");

        if (!zCheckBox.checked)
            alert("false");

        return true;
    }
</script>

并且复选框:

 <asp:CheckBox ID="chkAllJobs" runat="server" Text="All Jobs" />

调用自:

<asp:Button ID="btnPrintReport" runat="server" Text="Run Report" 
  OnClientClick="return ValidateReqNum();" OnClick="CreatePDFJobReport" />

我已经尝试了许多不同的方式,但它仍然返回相同的结果。
Error: Unable to get value of the property 'checked': object is null or undefined

同一个aspx页面中的其他元素都正常显示。我可以从我的C#代码中调用chkAllJobs,并且我也可以从C#中解决它是否被选中。


1
你的错误消息告诉你zCheckBox未定义,看看@Kaf的答案,那应该解决问题。 - roman m
2个回答

3
如果您正在使用母版页,则子页面的控件ID在客户端上将与它们的服务器ID不同。因此,不要使用服务器控件名称,而是尝试使用其客户端ID,如下所示:
var zCheckBox = document.getElementById('<%= chkAllJobs.ClientID %>');

function ValidateReqNum() {
   alert(zCheckBox.checked);
}

就是这样,谢谢!它让我有点困惑,因为它是“ClientID”,但你太棒了。非常感谢。 - user1947046
不客气!我看到了,我已经将“ClientId”更改为“ClientID”。 - Kaf
您还可以设置属性 ClientIDMode="Static"。请参阅:http://msdn.microsoft.com/zh-cn/library/system.web.ui.control.clientidmode(v=vs.110).aspx - ToastyMallows

1

这里是一个复选框的示例。如果你有以下的复选框:

 <input id="Checkbox" type="checkbox" name="mycheckbox" value="5"/>

然后您可以使用表单集合获取该值

label_Result.text = Request.Form["mycheckbox"]; 

因此,只有在勾选了该复选框时,您才会得到价值5。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接