click()表现不像用户点击

时间:2010-03-15 20:45:10

标签: javascript jquery events click onclientclick

过去几个小时我一直在寻找解决方案,但无济于事。当我单击OnClientClick中返回false的按钮时,服务器不会发生回发。当我使用jquery触发按钮的单击功能时,OnClientClick首先触发,但无论返回值如何,都会发生回发。这是一个简单的样本...

k ...提供更准确地说明问题的代码。抱歉混淆......

    <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <script src="script/jquery-1.4.2.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <img onclick="$('#Button1').click();" runat="server" width="100" height="100" style="border:solid 1px black" /><br />
        <asp:Button ID="Button1" OnClick="Button1_Click" OnClientClick="return false;" runat="server" Text="Button" />
    </div>
    </form>
</body>
</html>

要回答一些问题......我有一个用户控制。它是一个翻转按钮,使用两个图像和一个隐藏按钮来调用服务器。该按钮使用Reflection来启用指定的任何OnClick处理程序,以在控件所在的特定页面上调用该函数。如果我需要,OnClientClick还用于提供其他Javascript操作。当我有一个看不见但可点击的按钮直接接线时,一切都工作正常。我决定让按钮真的不可见,甚至不显示它,但这要求我让图像实际上将点击事件发送到按钮。

3 个答案:

答案 0 :(得分:0)

我认为您在此上下文中误解了jQuery单击处理程序的用途,并且您没有在onClientClicked事件中返回false。

没有理由使用onClientClicked属性为服务器端按钮或图像连接jQuery单击处理程序。只需将脚本调用连接到您需要执行的任何脚本。

像这样:

<asp:Button ID="Button2" runat="server" Text="Trigger" onClientClick="doClientSideCheck();" />

<script type="text/javascript">
  function doClientSideCheck()
  {
    return false;
  }
</script>

另一方面,当你有客户端按钮或图像时,这是适合jQuery点击处理程序的地方。

<input id="button1" type="button" class="myButtonClass" value="Submit" />

    <script type="text/javascript">
     $(document).ready(function()
        {
             $(".myButtonClass").click(function(e) { alert('button clicked ' + $(this).attr('id') ); });
         });
    </script>

答案 1 :(得分:0)

runat =“server”表示需要回发。如果你没有为Button1获取它,可能是因为你在同一个标​​签中有一个OnClick和一个OnClientClick,并且该组合覆盖了runat属性。

答案 2 :(得分:0)

jQuery的click方法不会像OnClick方法那样返回true或false - 而是返回对自身的引用。这是为了便于链接jQuery方法调用。

理想情况下,你想要的是从Button1和Button2的javascript调用相同的方法,而不是只用一个按钮调用另一个。如果你需要一些需要回发的条件,你可以在那里调用Button1.GetPostbackEventReference。

如果使用CSS类来处理它,jQuery也会非常简单:

<asp:Button ID="Button1" CssClass="ButtonHandler" />
<asp:Image ID="Button2" CssClass="ButtonHandler" />

<script>
$(document).ready(function() {
    $(".ButtonHandler").click( function() {
        // stuff you want to do
        return false;
    });
});
</script>

这可能不是您所需要的,但我认为您需要更详细地了解您想要的内容。