当我同时使用Onclick& On时,OnClick无法正常工作的OnClientClick

时间:2012-03-08 14:42:49

标签: javascript asp.net

使用此代码,我尝试关闭一个窗口(我正在这样做的方式)但我还有一个被忽略的Onclick事件!

<script type="text/javascript">


            function GetRadWindow() {
                var oWindow = null;
                if (window.radWindow) oWindow = window.radWindow;
                else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;
                return oWindow;
            }

            function CloseDialog() {
                GetRadWindow().close();

            }  

ASPX页面:

 <asp:Button ID="Button1" runat="server" Text="Soumettre ce ticket" 
                onclick="Button1_Click"  OnClientClick="CloseDialog();return false;"/>

我的应用程序永远不会进入Button1_click事件,任何人都可以帮我找出原因吗? 提前谢谢

编辑:为按钮生成的HTML

<input type="submit" id="Button1" onclick="CloseDialog();" value="Soumettre ce ticket" name="Button1"/>

5 个答案:

答案 0 :(得分:15)

This article解释了这个问题。如果要触发服务器事件,则需要在JS中返回true。否则,你必须返回false。

而且,看起来您还必须根据以下内容添加UseSubmitBehavior = false:OnclientClick and OnClick is not working at the same time?

在看到生成的HTML只有CloseDialog()而不是对Button1_Click的调用之后,这一点尤其明显。此更改将连接到您的onclick结束。

<asp:Button ID="Button1" runat="server" Text="Soumettre ce ticket" 
            onclick="Button1_Click"  OnClientClick="CloseDialog();"  
            UseSubmitBehavior="false"/>

答案 1 :(得分:6)

我遇到了这个问题并使用UseSubmitBehavior="false"几乎完成了这个伎俩。请务必正确设置OnClientClick来电:

我的代码使用OnClientClick="return ValidateSearch();"这是不正确的。它应该只是

<asp:Button ID="keywordSearch" runat="server" Text="Search" TabIndex="1" 
OnClick="keywordSearch_Click" OnClientClick="if (!ValidateSearch()) { return false;};" />

请在此处查看Source(并告诉他们!)

如果设置不正确,OnClick功能将不会触发。

答案 2 :(得分:4)

您正在false中返回onclientclick,因此在回发之前会返回该事件。因此,onclick永远不会触发。

答案 3 :(得分:0)

我刚遇到同样的问题,我认为我们在服务器端enable="false"和客户端&#34;禁用&#34;之间感到困惑。

使用control.Enabled = "false";启用控件的serverside属性与应用Attribute相同,例如control.Attribute.Add("disabled","disabled");

如果您从服务器端应用Enabled = false;,即使它已在屏幕上显示,您实际上也会完全关闭控件!继续,尝试并右键单击该控件,然后选择InspectorFireFly进行查看。什么都没有出现。没有任何事情发生,因为控件不存在&#34;。

但是,如果您应用Attribute属性,则控件对服务器和客户端可见,并且您可以检查它。

我所做的是在ASP.net端设置默认环境,通过说控件(在我的情况下为asp:Button),有Enabled="true"(或者没有说什么,因为&#39;无论如何都是默认的。)

在服务器端,在PageLoad()后,我将按钮设为Visible(在我的情况下,我也将其默认为visible="false"),并添加适当的Attribute值。

btnSEND.Visible = true;
btnSEND.Attributes.Add("disabled", "disabled");

这样按钮没有启用,但它不完全&#34;隐形&#34;对于客户端,并通过在我的程序的另一个区域中使用JavaScript,我控制何时启用它。

此方法还避免了必须使用UseSubmitBehavior="false"

答案 4 :(得分:0)

在page_load中,使用Add.Atribute方法传递java脚本函数,返回true。首先它将加载javascript函数。然后它将加载按钮点击事件