0

我正在尝试使用 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?

4

2 回答 2

1

你不能这样做,因为确认/警报/提示是调用浏览器应用程序中代码执行的 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);
        }
    });
}
于 2013-07-10T00:26:01.780 回答
0

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

于 2013-07-09T23:52:10.640 回答