【问题标题】:Jquery UI dialog in place of javascript confirmJquery UI 对话框代替 javascript 确认
【发布时间】:2011-08-10 17:56:38
【问题描述】:

我有一堆带有确认的验证 javascript 进程。我想使用 jquery ui 对话框,但我需要在其余的验证过程中返回 true。

例如:

var where_to_coupon = confirm(pm_info_msg_013);
      if (where_to_coupon== true) {
      doSubmit=true;
      return doSubmit;

所以我需要一个函数来用 UI 对话框替换确认,拉取消息字符串 (pm_info_msg_013),并使用我自己的按钮或 UI 按钮返回 true 以进行验证过程。

不知道从哪里开始。

帮助?

【问题讨论】:

    标签: jquery jquery-ui dialog confirm


    【解决方案1】:

    在 jQuery UI 对话框中,将 modal 选项设置为 true,并使用 buttons 选项指定主要和次要用户操作。

        $( "#dialog-confirm" ).dialog({
            resizable: false,
            height:140,
            modal: true,
            buttons: [{
                text: pm_info_msg_013,
                click : function() {    
                    $( this ).dialog( "close" );
                    // code related to "where_to_coupon== true" goes here
                    // submit form
                    }
                }, {
                text: "Cancel",
                click: function() {
                    $( this ).dialog( "close" );
                    doSubmit = false;
                    // don't submit form
                }}]
        });
    

    在此处查看演示:http://jqueryui.com/demos/dialog/#modal-confirmation

    更新: 这将允许您创建多个确认。用法:

    function CreateDialog(okText, cancelText, okCallback, cancelCallback) {
            $( "#dialog-confirm" ).dialog({
                resizable: false,
                height:140,
                modal: true,
                buttons: [{
                    text: okText,
                    click : function() {    
                        $( this ).dialog( "close" );
                        okCallback();
                        }
                    }, {
                    text: cancelText,
                    click: function() {
                        $( this ).dialog( "close" );
                        cancelCallback();
                    }}]
                }
            });
    
    // ******* usage #1 ********    
    CreateDialog(pm_info_msg_013, "Cancel", function () {
       // where_to_coupon== true
    }, function() {
    
       // where_to_coupon== false
    });
    
    function OnConfirmTrue() {
      // do something
    }
    
    function OnConfirmFalse() {
      // do something
    }
    
    // ******* usage #2 ********
    
    CreateDialog(pm_info_msg_013, "Cancel", OnConfirmTrue, OnConfirmFalse);
    

    【讨论】:

    • 不确定如何与我的 javascript 确认字符串合并
    • 在调用上述代码之前,您需要动态更改dialog-confirm div ($("#dialog-confirm").html(pm_info_msg_013)) 的html
    • 好的,谢谢。下一个问题是如何触发“if (where_to_coupon== true) {”
    • @Jason:将它们放在各自的 click 函数中。您也可以从那里调用页面上的其他功能。您无需检查where_to_coupon== true,因为处理程序会根据单击的按钮被调用。再次查看我的更新。
    • 但这不是只返回文本:pm_info_msg_013,而不是 pm_info_msg_013 引用的字符串吗?
    【解决方案2】:

    我为 jQuery UI 创建了一个名为 dialogWrapper 的插件,它提供了多种方法,包括一个确认方法。你这样称呼它:

    $.confirm("Prompt", function(){}, function(){}, {});
    

    第二个和第三个参数分别是单击是和否按钮时要执行的操作。第四个是附加参数。

    在这里查看:http://code.google.com/p/dialogwrapper/

    不过,它不像原生 JavaScript confirm 方法那样工作,因为它是异步的。所以你不能直接用$.confirm覆盖confirm

    【讨论】:

    • 看起来很有趣,但我正在尝试使用最少的代码(尤其是在 javascript 中) - 那么如何在您的插件中返回 true 或 false?
    • 你不能,因为$.confirm 是异步工作的。它完全依赖于回调。如果没有丑陋的 UI 阻塞代码(例如,检查按钮是否已被按下的 while 循环),就无法同步使用 jQuery 对话框。
    • 好吧,我想一定有办法(第二个函数)或 onclick 事件来触发 true?
    • 如果我在错误消息中使用自己的按钮而不是使用 jquery UI 的按钮会怎样?
    • 我不太清楚你的意思
    【解决方案3】:

    您尝试过 Trent Richardson 的 Impromtu 吗?

    http://trentrichardson.com/Impromptu/

    这个 jquery 插件可以通过提示和确认等为您提供您正在寻找的控件。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    相关资源
    最近更新 更多