Javascript 禁用作为 asp.net 控件加载的元素的内联单击

Javascript to disable inline onclick for element loaded as asp.net control

本文关键字:加载 元素 单击 控件 net asp Javascript      更新时间:2023-09-26

我有一个 ASP.NET Webforms页面。在代码隐藏中,使用以下代码将 onclick 属性添加到标签控件和文本框控件 -

lblName.Attributes.Add("onClick", "javascript:location.href='NameForm.aspx?id=" & CStr(fnRetRow("name_id")) & "';")
txtName.Attributes.Add("onClick", "javascript:location.href='NameForm.aspx?id=" & CStr(fnRetRow("name_id")) & "';")

将生成以下 HTML 元素。(请注意,这些最终位于几个嵌套的<table><tr>层中......元素。-

<td class="formlabel">
  <span id="lblName" class="formlabel" onclick="javascript:location.href='NameForm.aspx?id=123';"></span>
</td>
<td class="forminputtxt">
  <input id="txtName" class="forminputtxt" onclick="javascript:location.href='NameForm.aspx?id=123';">
</td>

问:如何在页面加载(或加载元素)后,在 aspx 页面中使用简单的 JavaScript 函数来禁用这些onclick属性?

我尝试了以下选项但没有成功 -

<script language = "javascript">
  window.onload = function() {
    document.getElementById('lblName').onclick = '';    // option 1 for label
    document.getElementById('txtName').onclick = '';    // option 1 for textbox
    document.getElementById('lblName').removeAttribute("onclick");  //option 2 for label
    document.getElementById('txtName').removeAttribute("onclick");  // option 2 for textbox
  }
</script>

选项 2 无效。文本框的选项 1 不起作用。

标签的选项 1 确实以某种方式禁用了链接;但是,内联 JavaScript 仍显示在页面的最终 HTML 中。这是可以接受的,但并不理想。

页面加载后禁用(或理想地删除)onclick属性的简单方法是什么?

注意:JQuery 在页面中不可用。

为两个事件分配 null

document.getElementById('lblName').onclick = null; 
document.getElementById('txtName').onclick = null;

它不会从页面的"查看源代码"中删除onclick="javascript:location.href=...,因为这是服务器端代码呈现 HTML 的方式,但它将有效地禁用"onclick"事件。

演示:http://jsfiddle.net/qwE74/1/(请注意,在您的 HTML 中"SPAN"标签没有关闭,我为演示更正了它)