[英]Disabling LinkButton doesn't disable the click event in javascript
我想在客戶端站點上禁用LinkButton
clink。
objLinkButton.disabled = true;
// or
objLinkButton.disabled = -1;
這會禁用鏈接,但我仍然可以單擊鏈接並執行PostBack。
有什么辦法可以禁用鏈接。
碼:
<asp:linkbutton id="xyz" runat="server"
onClick="javascript:LinkDisable(this)" ></asp:linkbutton>
它呈現為一個回發的鏈接......我在新窗口中打開回發頁面。 我想要做的是..當我第一次點擊鏈接時...它將打開一個新頁面,然后它將禁用該鏈接。
我正在做的是... onClick的鏈接我有一個javascript函數..這是這樣的..
在LinkDisable中......
function LinkDisable(obj)
{
obj.disabled = -1;
obj.href = '#';
//Cant return false from here.. otherwise it wont postback...
}
當我這樣做...鏈接變灰了......但我仍然能夠點擊它。 我想阻止用戶第二次點擊它。
任何幫助表示贊賞。
如果要禁用鏈接按鈕,只需使用以下代碼即可。
標記
<asp:LinkButton ID="lnkButton" Text="Submit" runat="server">
</asp:LinkButton>
C#代碼
this.lnkButton.Attributes.Add("disabled","disabled");
我正在以tvanfosson的回答為基礎。 他使用jQuery的答案效果很好,但是如果你有驗證器,它會讓事情變得混亂。 開始:
var code = null;
$(document).ready(function () {
var button = $('#SubmitPaymentLnkBtn');
code = button.attr('href').replace(/javascript:/, '');
button.attr('href', '#'); // replace postback function
button.click(function () {
if (Page_ClientValidate('PaymentInfo')) {
// now only runs if above validationGroup is valid
$(this).unbind('click');
if (code) {
$(this).addClass('disabled-btn');
eval(code); // do post back
}
}
});
});
然后在您的標記中,確保將ClientIDMode設置為Static。
<asp:LinkButton ID="SubmitPaymentLnkBtn" Text=" submit " runat="server" CssClass="BlackBgText" ValidationGroup="PaymentInfo" Font-Size="22px" onclick="SubmitPaymentLnkBtn_Click" ClientIDMode="Static" />
使用jQuery,您可以在獨立於瀏覽器的情況下執行此操作,方法是替換href或添加搶占並停止跟蹤鏈接的單擊處理程序。
$('#objLinkButton').attr('href','#').addClass('disabled-link');
要么
$('#objLinkButton').click( function() { return false; } )
.addClass('disabled-link');
其中disabled-link
類具有一些CSS來更改鏈接的外觀,以便它在視覺上看起來是禁用的。
請注意,如果控件位於命名容器(如GridView或UserControl)中,則必須使用id上的“ends with”選擇器引用該名稱。
$('id$="objLinkButton"')...
編輯 :根據您的更新。 試試這個:
var code = null;
$(document).ready( function() {
var button = $('#objLinkButton');
code = button.attr('href').replace(/javascript:/,''); // save postback function
button.attr('href','#'); // replace postback function
button.click( function() {
$(this).unbind('click'); // get rid of click handler so it only fires once
if (code) { // if link hasn't been used
eval(code); // do post back
}
});
});
在不使用jQuery的情況下禁用鏈接(並將其呈現為普通文本)的最簡單方法是完全刪除它的href
屬性。
例如,這里是渲染的鏈接:
<a id='link1' href="javascript:disableLink('link1');">Click me</a>
和所需的JavaScript:
function disableLink(id) {
document.all[id].removeAttribute('href');
}
這在IE和Firefox中都適用,但您可能希望進行更廣泛的測試。
試試這個。 最簡單的例子
<asp:LinkButton ID="LinkButton6" runat="server" disabled="disabled" OnClientClick="return false;"> Test Button</asp:LinkButton>
這是一個基於您發布的評論的編輯,允許在第一次點擊時跟蹤鏈接按鈕,但不是。
要允許第一次單擊鏈接,而不是在此之后,請在頁面上創建一個變量以跟蹤單擊。
var clicked = 0;
由於鏈接按鈕在前端產生href,你可以這樣做
<a href="#" OnClientClick="return false"></a>
OnClientClick特定於.NET
如果您想在頁面加載后僅在某些情況下執行此操作:
<a href="" id="linkbutton">
var linkbutton = document.getElementById("linkbutton");
linkbutton.onclick = function(){
if(clicked != 0){
//if other than 0, not followed
return false;
}
else{
//link is followed here since it's the first time it's being clicked and clicked value = 0
clicked = clicked + 1;
}
}
找到了解決方案的人...這些javascript解決方案可以正常工作,但如果你刷新頁面......它將清除變量。
那就是那里的一個錯誤..
使用“userData”找到解決方案...... IE會話數據......真的很酷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.