0

我有一个 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>

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

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

<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 在页面中不可用。

4

1 回答 1

2

将 null 分配给两个事件

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

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

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

于 2013-09-26T02:46:48.643 回答