我有一个 asp:CheckBox
带有以下标签:
<asp:CheckBox ID="cbTest1" runat="server" onchange="cbChange(this.id);"/>
cbChange
是 <head>
中的一个 Javascript 函数看起来像这样(现在很简单):
<script type="text/javascript">
function cbChange(senderID) {
alert('|' + senderID + '|'); // '|' is to help see string length
return false;
}
</script>
现在,每当我点击 cbTest1
,我收到带有以下文本的警告框:
||
换句话说,它是一个空字符串。我还应该注意,当我使用更传统的 <input>
时我得到了预期的结果:
(<input>
的代码)
<input type="checkbox" name="cbtest2" id="cbtest2" onchange="cbChange(this.id);" />
(当我检查 cbtest2
时警告框中的文本)
|cbtest2|
为什么我会得到带有 asp:Checkbox
的 null/空字符串, 但与 <input>
的预期行为?
编辑 我做了更多的研究,因为 asp:CheckBox
有 ID
属性而不是(小写)id
,所以我尝试了 onchange="cbChange(this.ID);"
.现在我在警告框中得到以下输出:
|undefined|
为什么还会发生这种情况?
最佳答案
拉出您呈现的页面源代码,您会看到 ASP 实际上将其呈现为:
<span onchange="cbChange(this.id);"><input id="ContentArea_cbTest" type="checkbox" name="ctl00$ContentArea$cbTest" /></span>
您的 input
元素实际上嵌套了一个 span
元素。
使用纯 JS,您仍然可以通过以下方式获取 input
的 ID:
<asp:CheckBox ID="cbTest" runat="server" onchange="cbChange(this.childNodes[0].id);"/>
关于javascript - this.id 对于 asp :CheckBox 是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17575004/