【问题标题】:Prevent form postback on <asp:Button> using a jQuery confirmation dialog使用 jQuery 确认对话框防止 <asp:Button> 上的表单回发
【发布时间】:2012-06-21 19:40:28
【问题描述】:

我有一个带有 onclick 和 onclientclick 事件的 asp.net 按钮。

<asp:Button  ID="ButtonSave" Text="Save" ToolTip="Save" CssClass="causesValidation button" OnClick="ButtonSave_Click" OnClientClick="myfunction();" runat="server"/>

单击按钮后,客户端和服务器端事件都会被触发。如果客户端功能成功,我只希望服务器端事件运行。

我尝试了以下方法:

function myfunction()
{
    // Show dialog
    $('#mydialog').dialog('open');


// on dialog confirmation return true, else false;
}

<asp:Button  ID="ButtonSave" Text="Save" ToolTip="Save" CssClass="causesValidation button" OnClick="ButtonSave_Click" OnClientClick="return myfunction();" runat="server"/>

谢谢

【问题讨论】:

  • 好吧,这两个事件都被触发了。如果您不喜欢这样,请删除您不希望发生的事件。
  • 让我重新表述一下这个问题 - 我有一个 asp.net 按钮,它会导致表单验证,并且还有一个 onclick 事件。现在我想在提交表单之前做一些 javascript 计算。但我想在执行 onclientclick 之前验证表单。最好的方法是什么?
  • 更准确地说,我正在显示来自 javascript 函数的对话框,并且该对话框有两个按钮 ok 和 cancel。点击确定,我想提交表格。但我希望在显示对话框之前验证表单。

标签: jquery asp.net validation modal-dialog


【解决方案1】:

改变

OnClientClick="myfunction();" 

通过

OnClientClick="return myfunction();" 

【讨论】:

  • 让我重新表述这个问题 - 我有一个 asp.net 按钮,它会导致表单验证,并且还有一个 onclick 事件。现在我想在提交表单之前做一些 javascript 计算。但我想在执行 onclientclick 之前验证表单。最好的方法是什么?
  • 更准确地说,我正在显示来自 javascript 函数的对话框,并且该对话框有两个按钮 ok 和 cancel。点击确定,我想提交表格。但我希望在显示对话框之前验证表单。
  • @user1473171:在myfunction 内部进行验证,并在任何验证失败时返回 false。那不行吗?你是如何验证的?
  • 我尝试在 myFunction(); 中添加一个函数 validateControls(); validateControls() 尝试验证每个控件,但我在服务器端有一些自定义验证,这些验证将在 onClick 上进行验证。
  • 我认为我必须更具体
【解决方案2】:

OnClientClick="myfunction()" 更改为OnClientClick="myfunction(); return false;" 并调用__doPostBack 函数,将ButtonSave UniqueID 作为对话框确认的第一个参数值

【讨论】:

  • 这导致页面无法验证
  • 让我重新表述一下这个问题 - 我有一个 asp.net 按钮,它会导致表单验证,并且还有一个 onclick 事件。现在我想在提交表单之前做一些 javascript 计算。但我想在执行 onclientclick 之前验证表单。最好的方法是什么?
  • 更准确地说,我正在显示来自 javascript 函数的对话框,并且该对话框有两个按钮 ok 和 cancel。点击确定,我想提交表格。但我希望在显示对话框之前验证表单。
  • 您可以使用 ValidatorValidate 函数检查 Page_IsValid 属性值并根据此属性值显示或不显示对话框来强制客户端验证。按照此链接验证客户端 API:msdn.microsoft.com/en-us/library/aa479045.aspx
【解决方案3】:
onclientclick=return function();

【讨论】:

  • 让我重新表述一下这个问题 - 我有一个 asp.net 按钮,它会导致表单验证,并且还有一个 onclick 事件。现在我想在提交表单之前做一些 javascript 计算。但我想在执行 onclientclick 之前验证表单。最好的方法是什么?
  • 更准确地说,我正在显示来自 javascript 函数的对话框,并且该对话框有两个按钮 ok 和 cancel。点击确定,我想提交表格。但我希望在显示对话框之前验证表单。
猜你喜欢
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 2014-07-02
  • 1970-01-01
  • 2011-10-13
  • 2011-04-22
  • 2010-12-17
相关资源
最近更新 更多