2013-09-26 67 views
0

我有一個ASP.NET Webforms頁面。在代碼的後面,一個onclick屬性被添加到標籤控制和使用的代碼的文本框控制 - 生成JavaScript禁用內嵌onclick作爲asp.net控件加載的元素

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

+0

想想你正在嘗試做的。是否有可能知道服務器端的點擊事件是否應導致在onclick屬性中定義的行爲?如果點擊元素不應該觸發事件,最好離開onclick屬性服務器端。它會使你的有效載荷小一點。 – rstackhouse

+0

無可否認,我正在尋求一種快速的前端「黑客」來禁用「onclick」事件而不改變代碼隱藏。 – mjmoody383

回答

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」標籤沒有關閉,我糾正它演示)

+0

謝謝。這與糾正錯字一起解決了我的問題。 – mjmoody383

相關問題