点击JavaScript确认框上的取消按钮不能停止网格刷新。

6
如何在 JavaScript 确认框上点击取消按钮时停止页面渲染 .cs 代码?
我有一个按钮单击事件,在某些 IF 条件中,我要求用户确认。现在当用户单击确定按钮时,我必须绑定新数据到网格中。但是,如果用户单击取消按钮,则不应使用新数据刷新网格。
问题:如何在 JavaScript 确认框上点击取消按钮时停止执行以下代码,或者如何从 JavaScript 中返回/跳出?
请问有谁可以帮我解决这个问题吗?提前致谢。 标记
<asp:Button ID="btnCopy" runat="server" Text="Copy" Enabled="false" OnClick="btnCopy_Click" ValidationGroup="Copy" />

代码

public void btnCopy_Click(object sender, EventArgs e) { 
    if (Convert.ToInt32(hidId.Value) > 0) {
        string scriptString = "<script language='JavaScript'> ";
        scriptString += "if (confirm('Are you sure to proceed?') == false) {return} ";
        scriptString += "</script>";
        Page.RegisterStartupScript("Confirm", scriptString);
        BindDataGrid();
    }
}

2
请展示您现有的代码。 - Shadow The Spring Wizard
if (confirm("...")) refreshData(); 这段代码不起作用吗?你能给我们展示一些代码吗? - Ferdinand Beyer
如果(confirm("...")) refreshData();..它会在用户单击“确定”时工作..我的问题是,当用户单击“取消”按钮时,我该如何中断? - R S
@rick schott 在下面说得对。您混淆了客户端/服务器。在上面的示例中,您正在将客户端 onClick 事件设置为在客户端单击发生后发生的事件中。 - Jemes
5个回答

7
您在同一事件中混合了服务器端和客户端代码,必须分开处理: 脚本:
function Confirm()
{
    var record=confirm('Are you sure to proceed??');
    if(record == 1)
    {
        return true;
    }
    else if(record == 0)
    {
        return false;
    }
 }

标记语言:

<asp:Button ID="btnCopy" runat="server" Text="Copy" Enabled="false" 
    OnClick="btnCopy_Click" OnClientClick='return Confirm();' ValidationGroup="Copy" />

后台代码:

public void btnCopy_Click(object sender, EventArgs e) { 
    if (Convert.ToInt32(hidId.Value) > 0) {      
        BindDataGrid();
    }
}

抱歉,我忘记了脚本。谢谢。它可以工作了。感谢Rick Schott。你真棒! - R S
嗨,我正在尝试将以下代码包装在$(document).ready(function () {));中,以便可以检查var value = document.getElementById("hidId");,如果value > 0,则询问确认,否则返回; 对此有什么建议吗? - R S
$(document).ready(function () { var value = document.getElementById("hidId"); alert(value); if (value < 1) return; $(".confirm").click.. function Confirm() {
var record = confirm('您确定要覆盖记录吗?'); if (record == 1) { return true; } else if (record == 0) { return false; } } ));<div> <asp:Button class="confirm" ID="btnFillSIC" runat="server" CausesValidation="False" OnClientClick='return Confirm();' OnClick="btnFillSICData_Click" Text="填充" Width="50px" /> </div>
- R S

1
你需要捕获响应,例如:
if (window.confirm)
{
//handle the OK
}
else
{
//handle the cancel
}

我已经尝试过这个....字符串脚本 scriptString = "<script language='JavaScript'> "; scriptString += "if (confirm('确定要继续吗?') == false) {document.execCommand('Stop'); } "; scriptString += "</script>"; Page.RegisterStartupScript("Confirm", scriptString); 以及 window.stop() - R S

0
请展示代码,但是如果没有看到你的代码,我猜测你可能没有返回响应?
<input type="button" onclick=" return confirm('is this right?'); ">

0
你可以简单地从代码中使用 return 或者 exit(0)
function fillGrid()
{
 if( confirm("....") )
 {
  //populate your grid
 }
 else
 {
   return;
 }

 //do anything after the grid is populated
 //and exit the function
}

这是我所拥有的 <asp:Button ID="btnCopy" runat="server" Text="复制" Enabled="false" OnClick="btnCopy_Click" ValidationGroup="Copy" /> public void btnCopy_Click(object sender, EventArgs e) { if (Convert.ToInt32(hidId.Value) > 0) { string scriptString = "<script language='JavaScript'> "; scriptString += "if (confirm('您确定要继续吗?') == false) {return} "; scriptString += "</script>"; Page.RegisterStartupScript("Confirm", scriptString); BindDataGrid(); } - R S
尝试将return替换为exit(0),它应该能完成任务。 - Angelos Kapsimanis
如果(confirm("确定要继续吗?") == false) { exit(0); } - Angelos Kapsimanis
如果我将它更改为 <script language='JavaScript'> if (confirm('您确定要继续吗?') == false) {exit(0); },我会收到 JavaScript 运行时错误:Microsoft JScript 运行时错误:对象期望。 - R S
你可以直接使用“return”关键字,这样脚本就会结束并返回到 ASP 回调函数。你还想做什么? - Angelos Kapsimanis

0

你在按钮点击的代码后台显示确认对话框,但这不会停止代码的执行流程。

你需要在执行 postback 之前显示确认对话框。

<asp:Button ID="btnCopy" runat="server" Text="Copy" Enabled="true" OnClientClick="return confirm('sure?');" ValidationGroup="Copy" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接