function Confirm(msg,func1,func2,w,h){
var opts = {css:{width:w?w:300,height:h?h:120}}
//这里还可以判断msg的长度进行排版,并调整弹出框的大小
install(window.top, opts)
$.DialogData.dialogDiv.find("div[id^='_DialogButtons_']").css('text-align','center')
var win = topWin.$.DialogData.iframeObj.attr('contentWindow')
var doc = win.document
doc.open()
doc.write("<body></body>")
var arr = []
arr.push("<div><table height='100%' border='0' align='center' cellpadding='10' cellspacing='0'>")
arr.push("<tr><td align='center'><img id='Icon' src='../images/icon_query.gif' width='34' height='34' align='absmiddle'></td>")
arr.push("<td align='left' id='Message' style='font-size:9pt'>"+msg+"</td></tr></table></div>")
var div = $(arr.join(''),doc.body)
$(doc.body).append(div)
doc.close()
//设置响应函数
//如果传递响应函数则执行,否则仅关闭窗口
$.DialogData.dialogDiv.find("input[id^='_ButtonOK_']").bind("click", function() {
$.unfunkyUI()
if(func1){
func1()
}
})
$.DialogData.dialogDiv.find("input[id^='_ButtonCancel_']").bind("click", function() {
if(func2){
func2()
}
})
}
})(jQuery)
原生的confirm是通过线程阻塞达到这种目的,而在js里面无法达到这种效果,请弄清楚“同步”“异步”的概念。因此你这个思路是走不通的,函数调用完毕之时,你自定义的弹出框仅仅刚显示出来。但是你采用回掉的思路是正确的。myCovered.style.display = "block"之后追加以下代码
document.getElementById("_c_true").onclick = okCallBack
document.getElementById("_c_false").onclick = cancelCallBack
就可以实现确认和取消的回调。
confirm() 方法用于显示一个带有指定消息和OK 及取消按钮的对话框。
如果用户点击确定按钮,则confirm() 返回true。如果点击取消按钮,则confirm() 返回false。
在用户点击确定按钮或取消按钮把对话框关闭之前,它将阻止用户对浏览器的所有输入。在调用confirm() 时,将暂停对JavaScript 代码的执行,在用户作出响应之前,不会执行下一条语句。
下面我们通过这两个小例子,来了解一下它的使用方法吧:
<html><head>
<title>confrim 的使用方法</title>
<script type="text/javascript">
function clear1()
{
if(confirm("确定要清空数据吗?"))
{
document.main.text1.value=""
}
}
</script>
</head>
<boty>
<form name="main">
<input type="text" name="text1"/>
<input type="button" name="submit" value="数据清空" onclick="return clear1()"/>
</form>
</body>
</html>