2010-08-31 51 views
2

我有一个奇怪的问题,看来,我不知道如何解决。 我有这样一个按钮:Asp.Net按钮onclientclick问题

<asp:Button ID="btnSave" runat="server" ClientIDMode="Static" Text="Save" OnClientClick="return ConfirmSave();" OnClick="btnSave_Click" /> 

如果我写类似下面的我的客户端功能,它按预期工作:

function ConfirmSave() 
{ 
    return confirm('Confirm?'); 
} 

但我应该检查,在函数内部,对确认结果,像这样:

function ConfirmSave() 
    { 
     if (Page_ClientValidate('validationGroup')) 
     { 
     var conf = confirm("Confirm?"); 

     if (conf) 
     { 
      $('#btnSave').attr('disabled', 'disabled'); 
     } 

     return conf; 
     } 
     else 
     return false; 
    } 

这样做,网页提交,但服务器click事件不火。

任何人都可以帮忙吗?谢谢

+0

^^在if条件中,请实际替换“ - 做些什么”。 – Dienekes 2010-08-31 08:30:03

+0

在客户端使用此代码可能有所帮助: 2015-07-22 07:49:26

回答

0

如果你的代码中有一个名为btnSave_Click()的方法,那么当你回发它时,它将首先落入你的Page_load方法中,然后进入该方法。如果你使用的是VB,那么你需要一个Handles btnSave_Click()的方法。

+0

后面的代码是好的,我知道asp.net是如何工作的,它似乎有些奇怪的javascript问题。 – opaera 2010-08-31 07:47:20

2

是的,因为Button是用提交类型输入的。

您可能在页面中有一些其他错误,可能是您的按钮ID的重复(因为您已将其设置为静态模式)。

检查,如果你有给btnSave再在其他地方,或者还要检查,如果您有任何JavaScript错误。

(您的网页渲染后,在浏览器中看到你的页面的源代码和搜索btnSave ID是否存在一个以上的时间)

+0

如果我有一个重复的按钮ID,我输入的第一个函数不应该工作,而是它按预期工作。第一种方法,它正确返回True/False,也没有在第二个。 似乎没有javascript错误,但我不太确定,因为页面回发(没有触发服务器点击)。 – opaera 2010-08-31 07:53:53

+0

只存在一次。 – opaera 2010-08-31 08:06:33

+0

Aristos是正确的,必须有其他东西引起这种行为。它看起来并不直接与if条件块相关。 – Dienekes 2010-08-31 08:09:50

2

使用超时禁用你的代码完成后立即按钮并发生提交。

if (conf) 
{ 
    setTimeout(function() { $('#btnSave').attr('disabled', 'disabled') }, 0); 
} 
+0

+1这是唯一对我有用的东西,显然webforms回发javascript决定不处理按钮,如果按钮被设置为禁用我的脚本。 – Maslow 2012-02-07 14:20:16