2

我似乎有一个奇怪的问题,我不知道如何解决。我有一个这样的按钮:

<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;
   }

这样做,页面回发但服务器单击事件不会触发。

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

4

3 回答 3

2

在代码完成并提交后立即使用超时禁用按钮。

if (conf) 
{ 
     setTimeout( function() { $('#btnSave').attr('disabled', 'disabled') }, 0 );
} 
于 2010-08-31T13:35:55.667 回答
2

是的,它会触发,因为 Button 是使用提交类型输入的。

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

检查您是否在其他地方再次提供了btnSave ,或者检查您是否有任何 JavaScript 错误。

(渲染页面后,在浏览器上查看页面的源代码并搜索 btnSave id(如果存在多次))

于 2010-08-31T07:49:33.160 回答
0

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

于 2010-08-31T07:46:19.073 回答