在asp:按钮上的jQuery Click事件

时间:2009-04-04 09:39:51

标签: asp.net jquery

我有一个服务器端按钮

<asp:Button ID="btnSummary" runat="server" OnClick="btnSummary_Click" Text="Next" />

我想使用其ID附加jQuery Click事件,而不是使用替代类属性方式。

我尝试将click事件附加为:

$("#btnSummary").click(function() 
        {
            alert("1");
        });

但是,它的click事件不会被触发。另外,我也试过$("id[$btnSummary]")

有没有办法在没有按钮上的class属性的情况下使用jQuery在asp:button上附加click事件?

13 个答案:

答案 0 :(得分:12)

您可以在此找到一些选项

How to stop ASP.NET from changing ids in order to use jQuery

修改

在阅读了对其他答案的评论之后,听起来你需要在ASP.NET AJAX的pageLoad中绑定onclick事件处理程序,以便它在每次回发时绑定,包括异步回发。另一方面,$(document).ready()仅在初始页面加载时绑定一次

function pageLoad(sender, args)
{
     $("#<%=btnSummary.ClientID %>").click(function() 
    {
        alert("1");
    });
}
戴夫沃德写了nice article on the difference between pageLoad and $(document).ready()

答案 1 :(得分:9)

将ClientIDMode =“Static”添加到您的asp:按钮,如下所示:

<asp:Button ID="Button1" runat="server" ClientIDMode="Static" Text="Button" />

这将使ID保持不变。它会禁用此控件的自动生成的名称。

以下是此参考:http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientid.aspx

答案 2 :(得分:5)

  1. 运行网站时检查id属性是否在html源中。
  2. 您是否在文档就绪功能中有点击功能?
  3. -

    $(document).ready(function() {
        // put all your jQuery goodness in here.
    });
    

    编辑:

    由于服务器端控件和ID更改,您需要使用变量动态更新每个页面加载的javascript。

答案 3 :(得分:1)

ASP.NET为客户端内容生成一个UniqueID,您可以使用它来绑定事件。该ID是根据ControlCollection中的Control的位置以及不同的INamingContainers生成的,它很难看,你无法猜到它......

在页面的某处添加此类代码以连接该按钮。

<script type="text/javascript">
  $(function() { $("#<%=btnSummary.ClientID%>") }).click(function(){/*...*/});
</script>

答案 4 :(得分:1)

我现在很困惑。 让我解释一下:

1. I added a button on the page:
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server"  Text="Button" />
<div>

2. Then I added a JavaScript and jQuery:
<script type="text/javascript">
                    $(document).ready(function() {
                    $("#Button1").click(function() {
                        alert("Hello world!");
                    });

                    });
                </script>

3. The generated html is this:
<div>
  <input type="submit" name="Button1" value="Button" id="Button1" />
<div>

现在,我没有看到ASP.NET(asp.net 3.5)更改了ID。我为什么看 不同的行为?

顺便说一下。当我按下按钮时,这确实有效!

感谢。

答案 5 :(得分:1)

将选择器分配给适用于我的课程。

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="My Button" CssClass="myButton"/>

<script>
    jQuery(".myButton").click(function () {
        alert("clicked");
    });
</script>

答案 6 :(得分:0)

ASP.NET为您添加了id(例如:id“selectButton”变为

"ctl00_middleContent_gvPeople_ctl04_selectButton");

使用 jquery 语法搜索不会更改的ID部分。

$("[id='_selectButton']")

答案 7 :(得分:0)

在使用updatepanels时使用pageLoad,因为document.ready仅在页面初始化时运行一次,并且在部分回发上失去绑定。 PageLoad每次都会运行,因此会重新绑定每个部分回发。

答案 8 :(得分:0)

我有同样的问题,这对我有用

<asp:Button ID="Button1" runat="server" Text="ASP Button" OnClientClick="return false;" />

它增加了返回false,似乎有所不同。希望这会有所帮助。

问候

彼得

答案 9 :(得分:0)

请使用以下语法:Application来引用任何asp控件

答案 10 :(得分:0)

请尝试以下操作:

document.getElementById("<%=button1.ClientID %>").click();

答案 11 :(得分:0)

将此print包裹在html <asp:Button/>容器中。

<div>
<div id="testG">  
   <asp:Button ID="btn1" runat="server" Text="TestButton" />
</div>

答案 12 :(得分:-1)

你到达那里。我猜有两种方法,

  1. 从浏览器检查控件并查看控件ID,看起来像ct1000_ btnSummary。在jQuery的Click事件上使用此ID。
  2. 替换代码

     $("#ctl00_contentplcedholder_btnSummary").click(function() 
        {
            alert("1");
        });
    
    1. 下一个很简单,只需添加一个属性ClientIdMode =&#34; static&#34;为了您的控制并使用您将触发的实际Jquery点击事件。