javascript - this.id 对于 asp :CheckBox 是空的

标签 javascript asp.net checkbox

我有一个 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:CheckBoxID属性而不是(小写)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/

相关文章:

asp.net - 为什么我需要 RegisterStartupScript 来实现 asp.net 中的简单 jquery helloworld?

c# - 在下拉列表上使用 confirmbuttonextender 时出现重复值

javascript - 如何无法使用剑道网格复选框?

php - 提交带有空复选框的 HTML 表单

javascript - 是否有 JavaScript/jQuery DOM 更改监听器?

javascript - 浏览器的上一个或下一个按钮控件

javascript - 如何在 NestJS 中使参数成为必需的?

c# - .NET WebBrowser 控件 javascript

asp.net - 使用 ASN.NET 了解 SQL 中应用程序角色的性能影响

javascript - jquery 检查复选框是否被选中