0
  function Globally() {
    $("#dialogid").dialog({ width: 300, modal: true, show: 'drop', hide: 'drop',
        buttons: {
            "Ok": function () { return true; $(this).dialog('close'); },
            "Cancel": function () { return false; $(this).dialog('close'); }
        }
    });
  }

  function test()
  {
    if(Globally())
      alert("Ok");
    else
      alert("Cancel");
  }

我正在尝试创建一个确认对话框,并且我希望将其放置在一个函数中(在本例中为 Globally()),因为我在许多不同的函数中使用了确认对话框,但这不起作用,控件从Globally()函数返回而没有获得true or false价值。我希望它停在那里,直到用户按下Ok or Cancel。我怎样才能做到这一点?

4

2 回答 2

1

如果要运行这样的代码,则必须使用内置的确认功能:

var question = confirm("Proceed?")
if (question){
   // continue
 } else {
   // stop
 }

那是因为只有在使用时确认才能阻止整个 javascript 执行,并允许您选择一个答案或另一个(好的,取消)。

像 jQuery 对话框这样的对话框不能停止脚本执行所以即使你使用

if(Globally())
  alert("Ok");
else
  alert("Cancel");

它只会执行 Globally() 函数并在它之后继续 - 不等待用户回答。

如果您真的想使用 jq 对话框,请向您的按钮添加回调函数。

"Ok": function () { callbackFunctionTrue(); },
"Cancel": function () { callbackFunctionFalse(); }

并在测试函数中抛弃 if/else statement()。

于 2012-05-19T07:11:23.147 回答
0

那不是它的工作原理

做就是了

    "Ok": function () { alert('OK'); $(this).dialog('close'); },
    "Cancel": function () { alert('Not ok'); $(this).dialog('close'); }

或者

    "Ok": function () { $(this).dialog('close'); test(1) },
    "Cancel": function () {$(this).dialog('close'); test(0) }

function test(ok){
  alert(ok?"Ok":"Cancel");
}
于 2012-05-19T07:10:36.113 回答