复选框document.getElementById变为null

时间:2016-02-29 01:44:38

标签: javascript

我想知道是否选中了复选框。有一个customvalidator链接到复选框。使用java脚本,我正在检查选中的复选框

这是ASpx代码和Java脚本

function checkAcceptance(source, args) {
  args.IsValid = document.getElementById('CheckBox1').checked;
}
<div>
  <p>
    <asp:CheckBox ID="CheckBox1" runat="server" meta:resourcekey="CheckBox1Resource1"></asp:CheckBox>
    <asp:Literal ID="litTC1" runat="server" meta:resourcekey="litTC1Resource1" Text="I accept the"></asp:Literal>
    <asp:HyperLink ID="CnC" runat="server" Target="_blank" meta:resourcekey="CnCResource1">Condition of Carriage</asp:HyperLink>
    <asp:CustomValidator ID="cvTermsConditions" runat="server" ClientValidationFunction="checkAcceptance" ErrorMessage="Terms and Conditions must be accepted" meta:resourcekey="cvTermsConditionsResource1" Text="*"></asp:CustomValidator>
  </p>
</div>

我在函数中放了一个断点并获取enter image description here

这个

出了什么问题

2 个答案:

答案 0 :(得分:1)

您需要找到该元素,因为母版页会更改您的ID。

我建议您使用JQuery,但如果没有,请尝试使用:

function checkAcceptance(source, args) {
       var idcheckbox = document.querySelector("[id*='CheckBox1']").id;
       args.IsValid = document.getElementById(idcheckbox).checked;
}

或许您想要玩它,尝试使用不同的选择器(CSS方法)

http://www.w3schools.com/jsref/met_document_queryselector.asp

<强>更新
使用JQuery方法:

将JQuery脚本导入您的母版页。 使用:

  <asp:CheckBox ID="CheckBox1" runat="server" meta:resourcekey="CheckBox1Resource1" class="myclass"></asp:CheckBox>

和javascript:

args.IsValid = $(".myclass").prop("checked");

答案 1 :(得分:-1)

谢谢大家的反馈 我在拥有母版页时找到的最简单的解决方案是阅读元素

的clientid

function checkAcceptance(source, args) {
  args.IsValid = document.getElementById("<%=CheckBox1.ClientID %>").checked;
}

这没有问题