过去几个小时我一直在寻找解决方案,但无济于事。当我单击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操作。当我有一个看不见但可点击的按钮直接接线时,一切都工作正常。我决定让按钮真的不可见,甚至不显示它,但这要求我让图像实际上将点击事件发送到按钮。
答案 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>
这可能不是您所需要的,但我认为您需要更详细地了解您想要的内容。