javascript - JavaScript onchange("(this.id)") 在 c# CheckBox 与其他 c# 控件上
问题描述
我有一个 Web 文档,其字段从 c# (.aspx.cs) 动态填充。
其中许多字段是 TextBox 或 HtmlTextArea 元素,但有些是 Checkbox 元素。
对于其中的每一个,我在创建字段时填充了 ID 属性,以及使用.Attributes.Add("onchange","markChanged(this.id)")
这适用于除复选框以外的所有字段。所以我创建了一个 markCheckChange,因为我发现 Checkbox 不会接受style="backgroundColor:red"
或.style.backgroundColor = "red"
输入参数。
我还添加了一个警报,发现 Checkbox 实际上并没有将 传递this.id
给函数的参数markCheckChange(param)
。
结果,我收到了以下类型的错误:
无法设置未定义或空引用的属性
为什么以及这些控件之间有什么区别,有没有更好的方法来处理这个问题?
我刚刚再次查看了检查元素,发现 Checkbox 控件创建的不仅仅是复选框类型的输入字段,它还将它包装在 span 标签中,并且 onchange 函数正在应用于 span 标签(它有没有 id),而不是具有复选框 id 的输入标签。而对于 TextBox 和 HtmlTextArea 输入标签直接放在 cell/td 标签内,没有一些任意的 span 标签。
所以现在的问题变成了如何让 onchange 函数应用于复选框的输入标签,而不是封装它的 span 标签?
根据请求:
function markChange(param) {
if (userStatus == "readonly") {
document.getElementById("PrintRecButton").style.display = "none";
document.getElementById("PrintPDFButton").style.display = "none";
alert("Please login to make changes.\n\nIf you do not have access and need it,\n contact the administrator");
exit();
}
else {
document.getElementById(param).style.backgroundColor = "teal";
saved = false;
var page = document.getElementById("varCurrentPage").value;
markSaveStatus(page, false);
}
}
到目前为止,markCheckChange 大致相同,直到我让它正确传递 id 之前,我将无法找出正确的方法来突出显示更改的复选框。
解决方案
我找到了一个替代方案。
正如我在问题的编辑中提到的,检查元素功能显示CheckBox
类型控件正在创建一组嵌套元素,如下所示:
<span onchange="markChange(this.id)">
<input type="checkbox" id="<someValue>">
<label for="<someValue>">
</span>
因此,当 onchange 事件发生时,它发生在没有 id 的跨度上,因此没有 id 被传递document.getElementById()
给工作。
从那里我发现以下用于将标签应用于复选框: https ://stackoverflow.com/a/28675013/11035837
因此,CheckBox
我将使用HtmlInputCheckBox
. 而且我已经确认这会正确地将元素 ID 传递给 JavaScript 函数。
推荐阅读
- c++ - 多重继承上下文中的升级
- java - OSGI 中的 Camel-3 无负载 ScheduledPollConsumerScheduler
- google-bigquery - BigQuery 更新在具有多行的表上合并
- android - Dagger2,presenter中的接口
- python - 如何在 Python 中加入分段?
- android - 我在尝试使用 Room 数据库时收到此错误消息
- c++ - 检查私有成员变量是否在一定范围内,如果不调整
- webrtc - 有没有办法控制服务器日志?
- amazon-web-services - 启用计数时创建 Terraform 输出
- google-apps-script - 在范围谷歌电子表格中计算带有注释的单元格