如何显示具有“是”、“否”和“取消”三个按钮的确认提示,就像MS Word中显示的那样。

34

我通过JavaScript显示一个确认提示框:

function checked() {
 if (hdnval.toLowerCase() != textbox1.toLowerCase()) {
  var save = window.confirm('valid')
   if (save == true) 
   {
     return true;
   }
   else
    {
      return false;
    }
 }
}

确认警告框显示两个按钮:确定和取消。

我想在我的确认警告框中显示第三个按钮。 我希望三个按钮如下所示:“是”、“否”、“取消”,就像在MS Word中显示的那样。


很确定这里没有太多选择。另外,“No”和“Cancel”有什么不同? - Brian Driscoll
1
@BrianDriscoll:OP可能想要为“否”定义自定义逻辑。例如,用户单击“关闭”:对话框会显示“在离开之前,您是否要保存您的工作?”是:保存并关闭,否:不保存而关闭,取消:保持工作处于打开状态。 - StriplingWarrior
@Brian Driscoll: StriplingWarrior 是对的,是表示保存,否则表示不保存并转到其他选项卡,取消表示不保存但留在同一页。 - Rocky
我在我的应用程序中多次调用这个JavaScript函数。 - Rocky
2个回答

41

使用原生的JavaScript对话框无法实现此功能,但是许多JavaScript库包含更灵活的对话框。您可以使用类似jQuery UI 的对话框这样的库来实现此功能。

也请参阅以下非常相似的问题:

下面是一个示例,可以在这个 jsFiddle上演示:

<html><head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js"></script>
    <link rel="stylesheet" type="text/css" href="/css/normalize.css">
    <link rel="stylesheet" type="text/css" href="/css/result-light.css">
    <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/themes/base/jquery-ui.css">
</head>
<body>
    <a class="checked" href="http://www.google.com">Click here</a>
    <script type="text/javascript">

        $(function() {
            $('.checked').click(function(e) {
                e.preventDefault();
                var dialog = $('<p>Are you sure?</p>').dialog({
                    buttons: {
                        "Yes": function() {alert('you chose yes');},
                        "No":  function() {alert('you chose no');},
                        "Cancel":  function() {
                            alert('you chose cancel');
                            dialog.dialog('close');
                        }
                    }
                });
            });
        });

    </script>
</body><html>

我不懂jquery,你能否给我更多的演示例子,以便我能够使用jquery并且能够替换我的代码。谢谢。 - Rocky
@Rocky:如果我有时间,我可以提供一个代码示例,但是jQuery和jQuery UI对话框的文档已经非常清晰了。查看我链接到的演示页面的源代码。使用谷歌找教程。我很乐意提供帮助,只要我几分钟的工作可以为您节省数小时的努力,但我不会为你完成所有的工作。 - StriplingWarrior
@ StriplingWarrior: 如果您提供一些帮助和示例代码,那对我来说已经足够了,如果我有了一些想法,我可以做其余的事情。非常感谢您的回复和答案。 - Rocky
非常感谢,假设我想返回真或假,那我需要做什么? - Rocky
1
@Rocky:现在你已经为每个按钮设置了处理程序,以确定当用户单击“Yes”、“No”或“Cancel”时会发生什么。使用这些处理程序根据用户的点击实际执行某些操作。与其返回truefalse并让调用函数决定每种情况下该做什么,你可以让调用函数传递回调函数来确定用户单击每个按钮时应该发生什么。 - StriplingWarrior
@ StriplingWarrior:非常感谢,我通过你的示例解决了我的问题。 - Rocky

35

如果您不想使用单独的JS库来创建自定义控件,您可以使用两个confirm对话框进行检查:

if (confirm("Are you sure you want to quit?") ) {
    if (confirm("Save your work before leaving?") ) {
        // code here for save then leave (Yes)
    } else {
        //code here for no save but leave (No)
    }
} else {
    //code here for don't leave (Cancel)
}

最简单的解决方案总是我最喜欢的! - Charlie Dalsass

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