我们可以使用自定义div和消息创建一个Javascript确认框

时间:2013-03-10 11:36:31

标签: javascript

我需要一个带有自定义设计和动态消息的javascript 确认框

我的问题是:我需要一个函数来调用该调用如何才能收到该弹出窗口的结果; (如是或否)。这可能吗?

代码

if (confirm('Are you sure?')){
    //Do the process
}
else{ 
    //Show Error 
}  

我想用我的自定义样式覆盖该确认

3 个答案:

答案 0 :(得分:3)

如何制作一个允许用户回复的隐藏div

    <div id="confirm" class="noshow">
      <div  id="messageContent" class="message"></div>
      <div id="okButton" onClick="doConfirm(true)" class="button"></div>
      <div id="cancelButton" onClick="doConfirm(false)" class="button"></div>
    </div>

现在您可以使用getElementById('messageContent')轻松设置消息,同样现在可以使用okcancel函数处理doConfirm(true)doConfirm(false)操作

以简单的方式,你的javascript就像

doConfirm(flag){
  return flag;
 }

并拥有像

这样的CSS
.noshow{display:none;}

现在你可以在运行时从javascript构建html并附加事件处理程序,但这是我能想到的最简单的。

答案 1 :(得分:1)

您可以使用回调来执行此操作

确认处理程序,将其添加到您的全局JavaScript文件中

function ConfirmInDiv(message, okcallback, cancelcallback) {
  $('#confirmation-holder').show();
  $("#confirmation_message").text(message);
  $('#Confirmation_Ok').unbind('click');
  $('#Confirmation_Ok').click(okcallback);
  $('#Confirmation_Cancel').unbind('click');
  $('#Confirmation_Cancel').click(cancelcallback);
}

function HideConfirmDiv() {
  $('#confirmation-holder').hide();
}

HTML,应该位于您的布局文件中:

<div id="confirmation-holder" style="display:none">
    <div id="confirmation_message"></div>
    <a id="Confirmation_Ok" href="#" class="button">OK</a>
    <a id="Confirmation_Cancel" href="#" class="button light-button">Cancel</a>
</div>

无论你想在哪里调用你的javascript确认:

而不是这个

function delete()
{
     if(confirm("Delete?")
     {
         console.log('deleted');
     }
     else
     {
         console.log('delete cancelled');
     }
}

这样做

function delete()
{
    function ok()
    {
         console.log('deleted');
         HideConfirmDiv();
    }
    function cancel()
    {
         console.log('delete cancelled');
         HideConfirmDiv();
    }
    ConfirmInDiv('Delete?', ok, cancel);   
}

答案 2 :(得分:1)

对我来说这个解决方案要好得多:

HTML:

<div id='modal_dialog'>
        <div class='title'></div>
        <input type='button' value='yes' id='btnYes' />
        <input type='button' value='no' id='btnNo' />
</div>

JS:

function dialog(message, yesCallback, noCallback) {
    $('.title').html(message);
    var dialog = $('#modal_dialog').dialog();

    $('#btnYes').click(function() {
        dialog.dialog('close');
        yesCallback();
    });

    $('#btnNo').click(function() {
        dialog.dialog('close');
        noCallback();
    });
}

使用:

    dialog('Are you sure you want to do this?',
        function() {
            //If yes do something
            console.log("yes");
        },
        function() {
            //If no do something else
            console.log("no");
        }
    );
如果你没有忘记添加jquery,请不要忘记。

基于对alnorth29问题的this回答