制作Javascript是/否确认框?

时间:2010-10-18 09:55:43

标签: javascript

好的Javascript确认给出了确定/取消按钮,但是我想在Javascript中创建确认和否,任何人都可以帮忙吗?

3 个答案:

答案 0 :(得分:3)

Javascript无法更改确认框中的按钮。

我建议以内联弹出窗口的形式滚动自己。只需在页面中心创建一个position:absolute;的div,然后显示/隐藏它。

修改

下面的代码将概述您需要在vanilla Javascript中执行的操作。您可能希望花更多时间设计它,但关键点是:

position:absolute;这样弹出窗口就会出现在页面的中心。 display:none;以便在页面加载时隐藏弹出窗口。 该链接有href,因此即使没有Javascript它仍然可以正常运行。 第一个链接的onClick属性返回false;这会阻止链接重定向。

您可以更改弹出窗口中的两个onClick以执行其他任何操作。

<style type="text/css">

div#popup
{
    position:absolute;
    display:none;
    top:200px;
    left:50%;
    width:500px; 
    margin-left:-250px;
    border:1px solid blue; 
    padding:20px;
    background-color:white;
}

</style>

<a 
    href="http://example.com/" 
    onclick="document.getElementById('popup').style.display = 'block'; return false;"
>Go to example.com</a>


<div id="popup">
    <p>Are you sure you want to go to example.com?</p>
    <p>
        <a onclick="document.location='http://example.com/'; return false;">
            Yes
        </a>
        <a onclick="document.getElementById('popup').style.display = 'none'; return false;">
            No
        </a>
    </p>
</div>

为了获得更专业的结果,我建议您更多地了解JavaScript和jQuery,并研究其他海报建议的一些选项。

答案 1 :(得分:1)

基础知识是:

  1. 创建一个透明(或半透明)iframe来覆盖浏览器视口,它为您做了几件事:
    • 在确认框外点击点击
    • 防止操作系统绘制的控件(如选择框)显示在确认框顶部(否则,他们会在IE上显示,至少可能是其他人)
    • 并允许您(可选)遮挡页面的其余部分以突出显示您的确认框。给iframe一个z-index(100,比方说,除非页面上有其他元素的z-index高于此值。)
  2. 创建一个包含您的是/否问题和按钮的div,将其附加到主页的DOM,将其放在您想要的位置,然后给div {@ 1}}大于iframe的值。信不信由你,这意味着页面位于iframe的后面,但div就在它的前面。正是你想要的。
  3. 点击按钮,将整个事物撕下来(并得到答案)。
  4. 请记住,这将与您的JavaScript逻辑内联。您可以使用按钮中的回调。
  5. 这真的很容易(或那么复杂)。 : - )

    话虽如此,这个轮 已被发明 。寻找“灯箱”或类似的组件。例如,jQuery UI有一个名为Dialog,但只是将其添加到您不使用jQuery UI的页面可能会有点沉重。

答案 2 :(得分:0)

您不能影响常用window.alertwindow.confirmwindow.prompt()原生弹出窗口的使用。

但是,您可以使用其他现有库,例如ExtJSMessageBox

MessageBox是ExtCore的一部分,所以你甚至不需要整个库,只需要核心功能。

下面是一个使用Google AJAX Libraries API加载器的简单示例。

my.html <head>部分中的

<script type="text/javascript" src="http://www.google.com/jsapi?key=MY_API_KEY_GOES_HERE"></script>
<script type="text/javascript" src="my.js"></script>
my.js 中的

google.load("dojo", "1.5", {
  uncompressed: true
});

function OnLoad() {


  function processResult() {
     /* do something here */
  }

  Ext.Msg.show({
     title:'Save Changes?',
     msg: 'You are closing a tab that has unsaved changes. Would you like to save your changes?',
     buttons: Ext.Msg.YESNOCANCEL,
     fn: processResult,
     icon: Ext.MessageBox.QUESTION
  });
}

google.setOnLoadCallback(OnLoad);

有关详细信息,请参阅我对how to use the Google CDN上的其他问题的回答。