【问题标题】:jquery impromptu confirm/prompt replacementjquery即兴确认/提示替换
【发布时间】:2013-07-07 18:19:43
【问题描述】:

我正在尝试使用 jquery 和 impromptu 编写用于警报/确认/提示替换的库代码。

我希望能够以同样的方式调用函数:

例如。 var getval = jConfirm("Are you sure?"); alert (getval);

我的功能:

function jConfirm(text, title){
var return_val = false;

$.prompt(text, {
    title: title,
    html: text,
    buttons: { OK: true, Cancel: false },

    callback:function(e,v,m,f)
    {
        return_val = v;
    }
});

return return_val;}

代码当前继续执行,无需等待输入 - 立即显示警报,'getval' 永远不会得到值。

我怎样才能像本机确认函数一样即兴等待来自对话框的输入,并在继续之前将值返回给 getval?

【问题讨论】:

    标签: javascript jquery prompt confirm impromptu


    【解决方案1】:

    在您深入编写自己的对话系统之前,您见过 jQuery ui 吗?它提供了一个简单的功能来创建模态对话框。 http://jqueryui.com/dialog/#modal

    【讨论】:

    • 是的,我们已经在某些地方使用了 jquery-ui。尝试使用 impromptu 的原因是我已经在几个脚本中设置了它,并且希望将它通用化以便在其他地方简单使用。如果太难,我会改回ui,但我喜欢一些即兴的功能。
    • 在这种情况下,我所看到的完成模态对话框的方法是创建一个跨越 div 的文档,您可以更改弹出模态对话框时的 z-index。然后可以应用透明度以及事件来捕获任何输入。
    【解决方案2】:

    您不能这样做,因为确认/警报/提示是调用浏览器应用程序中代码执行的 JS 函数,该应用程序是用允许创建真正模式对话框的语言(例如 C#、Java)编写的:在用户关闭或与之交互之前停止执行应用程序的窗口。因此,在您的情况下, jConfirm 方法不能像 alert 那样停止页面的执行。为了做你需要做的事情,我建议将一个回调传递给 jConfirm 方法,只有当用户点击确定时,该回调才会在即兴回调之后执行

    jConfirm("Are you sure?","Confirm",dialogResult);
    function dialogResult(v)
    {
        alert(v);
    }
    
    function jConfirm(text, title, dialogResultCallback) {  
        $.prompt(text, {
            title: title,
            html: text,
            buttons: { OK: true, Cancel: false },
    
            callback:function(e,v,m,f)
            {
              if(v)
               dialogResultCallback(v);
            }
        });
    }
    

    【讨论】:

    • 谢谢。回调运算符对我不起作用 - 我将其更改为提交,它可以正常工作。 IE。将其更改为submit:function(e,v,m,f)
    猜你喜欢
    • 2011-08-30
    • 1970-01-01
    • 2011-07-24
    • 2011-06-05
    • 2012-05-09
    • 1970-01-01
    • 2012-08-22
    • 2012-04-10
    • 1970-01-01
    相关资源
    最近更新 更多