Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 禁用链接按钮不会';t在javascript中禁用click事件_C#_Asp.net_Javascript - Fatal编程技术网

C# 禁用链接按钮不会';t在javascript中禁用click事件

C# 禁用链接按钮不会';t在javascript中禁用click事件,c#,asp.net,javascript,C#,Asp.net,Javascript,我想禁用客户端站点上的链接按钮 objLinkButton.disabled = true; // or objLinkButton.disabled = -1; 这将禁用链接,但我仍然能够单击链接并进行回发 有什么方法可以禁用链接 代码: 当我这么做的时候。。链接得到灰色的。。。但我仍然可以点击它。我想阻止用户第二次单击它 非常感谢您的帮助。这是一个基于您发布的评论的编辑,允许在第一次单击时按链接按钮,而不是其他方式 要允许第一次单击链接,但不能在第一次单击之后单击,请在页面上创建一个变量

我想禁用客户端站点上的链接按钮

objLinkButton.disabled = true;
// or 
objLinkButton.disabled = -1;
这将禁用链接,但我仍然能够单击链接并进行回发

有什么方法可以禁用链接

代码:

当我这么做的时候。。链接得到灰色的。。。但我仍然可以点击它。我想阻止用户第二次单击它


非常感谢您的帮助。

这是一个基于您发布的评论的编辑,允许在第一次单击时按链接按钮,而不是其他方式

要允许第一次单击链接,但不能在第一次单击之后单击,请在页面上创建一个变量以跟踪单击

var clicked = 0;
因为linkbuttons在前端生成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;
   }
}

var linkbutton=document.getElementById(“linkbutton”);
linkbutton.onclick=函数(){
如果(单击!=0){
//如果不是0,则不跟随
返回false;
}
否则{
//由于是第一次单击该链接,因此此处跟随该链接,并且单击值=0
点击=点击+1;
}
}

使用jQuery,您可以在独立于浏览器的情况下执行此操作,方法是替换href或添加一个单击处理程序,该处理程序可以抢占并停止跟踪链接

$('#objLinkButton').attr('href','#').addClass('disabled-link');

其中,
disabled链接
类有一些CSS来更改链接的外观,使其在视觉上看起来是禁用的

注意,如果控件位于命名容器(如GridView或UserControl)内,则必须使用id上的“ending 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>

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

找到了解决方案。。。这些javascript解决方案可以工作,但如果您刷新页面。。。这将清除这些障碍

这就是一只虫子

使用“userData”找到解决方案。。。IE会话数据。。。真的很酷


查看此链接:

我正在建立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" />

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

标记

<asp:LinkButton ID="lnkButton" Text="Submit" runat="server">
</asp:LinkButton>

试试这个。最简单的例子

<asp:LinkButton ID="LinkButton6" runat="server" disabled="disabled" OnClientClick="return false;"> Test Button</asp:LinkButton>
测试按钮

您能提供一个代码示例吗?谢谢您的回复。我不能这么做。。。因为这样即使是第一次也不允许点击链接。我想第一次点击链接并在新窗口中打开链接。但是,在第二次点击之后,我想禁用它,即不可点击。嗨,达纳,这个解决方案将适用于普通链接,而不是当链接按钮创建链接时。发生的是..在linkbutton的情况下,它进行回发。因此,每次回发时,用于跟踪的变量都会重置。在这种情况下,我无法触摸服务器代码。我忘记回发了,不是吗!另一种黑客方式是将其分配给cookie,这将是持久的。谢谢Dhana。。。我收回我的评论。。当我发回并在一个新窗口中打开时,谢谢你的解决方案,但我只需要一个基本的解决方案。目前还没有使用Jquery。我需要说明的是,您可以不用jQuery来完成这项工作,但坦率地说,jQuery是非常基本的,其他任何事情都只是重新实现jQuery的一部分。一旦你有了一点javascript并开始尝试使其与浏览器无关,你就会发现在学习和使用框架上投入一点是有回报的。我理解你的观点。谢谢你的帮助。我仍然不知道如何解决这个问题。。只是禁用并使其返回false对我不起作用。。因为我必须第一次点击链接,然后禁用它。我会设法解决它的。。。到目前为止,我不知道fixcode将再次重置为空。。如果在重新呈现整个页面时进行回发。如果我错了,请纠正我。我理解你说回发发生在另一个窗口。如果这不正确,我们已经浪费了很多时间。您只需删除LinkButton服务器端并用文本替换它。
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
            } 
        }
    });
});
<asp:LinkButton ID="SubmitPaymentLnkBtn" Text=" submit " runat="server" CssClass="BlackBgText" ValidationGroup="PaymentInfo" Font-Size="22px"  onclick="SubmitPaymentLnkBtn_Click" ClientIDMode="Static" />
<asp:LinkButton ID="lnkButton" Text="Submit" runat="server">
</asp:LinkButton>
this.lnkButton.Attributes.Add("disabled","disabled");
<asp:LinkButton ID="LinkButton6" runat="server" disabled="disabled" OnClientClick="return false;"> Test Button</asp:LinkButton>