Asp.Net按钮onclientclick问题

时间:2010-08-31 07:35:02

标签: javascript 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;
   }

执行此操作后,页面回发但服务器点击事件不会触发。

有人可以帮忙吗?感谢

3 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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