javascript - 如何重现由JavaScript函数 confirm() 提供的"wait" 功能?

  显示原文与译文双语对照的内容
0 0

我正在尝试在窗口中编写一个自定义对话框( 基于 jQuery UI ),我们可以使用它来控制窗口( 按钮文本等)的所有方面。 我想要的是控件的行为,它的行为恰好是构建在 confirm() function behaves (call confirm() 中的方式,脚本执行暂停直到用户单击确定或者取消,confirm() 返回 true 或者 false ) 。 我已经找到了解决这个问题的方法,而我所得到的关闭结果如下:


//title = text to be displayed for title
//text = text to be displayed in body of dialog
//func = name of function to be called upon user selection, result will be passed as first parameter
function aw_confirm(title, text, func){
 <%= ClientID %>_retVal = null;
 <%= ClientID %>_func = func;
 <%= ClientID %>_show(title, text);
 <%= ClientID %>_waitForSelection(func);
}

function <%= ClientID %>_waitForSelection(func){
 if (<%= ClientID %>_retVal!= null){
 var r = <%= ClientID %>_retVal;
 <%= ClientID %>_retVal = null;
 func(r);
 }
 else setTimeout("<%= ClientID %>_waitForSelection(<%= ClientID %>_func)", 10);
}

这是一个aspx控件,因此 <%= ClientID %> before所有内容,以确保没有人在其他控件中覆盖代码。

就像你所看到的,当前的设置要求程序员在用户做出选择时编写一个处理程序( 这里叫 func ) 来调用。 我真正喜欢的是 aw_confirm() 等待用户做出选择然后返回。 有什么方法可以做到? 感谢你提供的任何帮助或者建议 !

时间: 原作者:

0 0

Javascript主要是基于事件的。代码对事件( 。单击按钮,计时器等) 做出React。 jQuery UI 也遵循这个范例。 你正在努力对抗这一切,因此即使可能也会非常困难。 你应该遵循基于事件的方法。

它不必与使用确认的代码有很大的区别。 如果你有:


ret = confirm("Hello User")
//do something

你现在可以写


aw_confirm("Hello user","", function(ret){
//do something
})

将匿名函数用作回调。

原作者:
...