簡體   English   中英

ASP.NET linkbutton enabled = false在Firefox中不起作用

[英]ASP.NET linkbutton enabled=false does not work in Firefox

我想禁用ASP.NET linkbutton 我想要的是一個解決方案,其中瀏覽器不允許我單擊鏈接按鈕,或者至少不執行相關操作。

我使用WebForms在HTML標記上執行以下操作:

 <asp:LinkButton
       id="link1"
       text="Some button"
       runat="server"
       Enabled ="false"
 />

我使用jQuery事件觸發鏈接按鈕操作:

$('#link1').click(function (evt) {
    // Do something here
    return false;
});
  • 在IE8中,它被禁用並且不允許點擊
  • 在Chrome中未禁用它,但ID不允許點擊
  • 在Firefox 41.0.1中,我仍然可以單擊鏈接按鈕並執行操作

如果在后面的代碼中將其禁用,結果將相同:

this.link1.Enabled = false;

不清楚您是否簡化了它,但是由於按鈕的客戶端ID的更改,看來您的jQuery無法執行。 您將需要執行以下任一操作:

在控件上將ClientIDMode設置為static ...

確保id保留為link1以便在客戶端代碼中使用。

<asp:LinkButton
    id="link1"
    text="Some button"
    runat="server"
    Enabled ="false"
    ClientIDMode="static"
    />

或者,在運行時在jQuery中獲取控件的ID ...

盡管這僅在您的jQuery位於同一Web表單頁面而不是外部JS內有效。

$('#<%= link1.ClientID %>').click(function (evt) {
    // Do something here
    return false;
});

無論您選擇...

如果鏈接正確,則可以使用jQuery的preventDefault()方法禁用回發觸發。

$('#link1').click(function (evt) {
    evt.preventDefault();
    // Do something here
});

禁用鏈接按鈕不會阻止其被單擊。 在我的測試中,禁用的linkbutton呈現如下:

<a class="aspNetDisabled">test</a>

jQuery將愉快地將click事件附加到該錨標記。 您需要防止事件觸發或更改代碼,以便僅在啟用按鈕后才執行您的操作。

這是一個可能的解決方法,僅在啟用該按鈕后才會執行您的js:

$('#link1').click(function (evt) {
    if('<%=link1.Enabled%>' === 'True') {
      // Do something here
    }
    return false;
});

即使客戶端觸發了禁用按鈕,if語句也會導致Do something here執行操作”無法運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM