禁用LinkBut​​ton不会禁用javascript中的click事件

我想在客户端站点上禁用LinkButton clink。

 objLinkButton.disabled = true; // or objLinkButton.disabled = -1; 

这会禁用链接,但我仍然可以单击链接并执行PostBack。

有什么办法可以禁用链接。

码:

  

它呈现为回发的链接……我在新窗口中打开回页页面。 我想要做的是..当我第一次点击链接时…它将打开一个新页面,然后它将禁用该链接。

我正在做的是.. onClick的链接我有一个javascript函数..这是这样的..

在LinkDisable中……

 function LinkDisable(obj) { obj.disabled = -1; obj.href = '#'; //Cant return false from here.. otherwise it wont postback... } 

当我这样做…链接变灰了……但我仍然能够点击它。 我想阻止用户第二次点击它。

任何帮助表示赞赏。

如果要禁用链接按钮,只需使用以下代码即可。

标记

   

C#代码

 this.lnkButton.Attributes.Add("disabled","disabled"); 

在不使用jQuery的情况下禁用链接(并将其呈现为普通文本)的最简单方法是完全删除它的href属性。

例如,这里是渲染链接:

 Click me 

和所需的JavaScript:

 function disableLink(id) { document.all[id].removeAttribute('href'); } 

这在IE和Firefox中都适用,但您可能希望进行更广泛的测试。

使用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 } }); }); 

我正在以tvanfosson的答案为基础。 他使用jQuery的答案效果很好,但是如果你有validation器就会让事情变得混乱。 开始:

 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。

  

这是基于您发布的评论的编辑,以允许在第一次单击时遵循链接按钮,但不允许。

要允许在第一次点击链接,而不是在此之后,在页面上创建一个变量以跟踪点击。

 var clicked = 0; 

由于链接按钮在前端产生href,你可以这样做

  

OnClientClick特定于.NET

如果您想在页面加载后仅在某些情况下执行此操作:

  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会话数据……真的很酷。

查看此链接: http : //www.eggheadcafe.com/articles/20010615.asp

试试这个。 最简单的例子

  Test Button