我正在开发MooTools确认框功能。我有两个按钮,可以正常取消。
所以我想点击OK返回TRUE,点击CANCEL返回FALSE。
这是我的功能代码。
function confirm_box(title, text)
{
var className = 'msgAlert info';
var defaut_title ='Information';
// Placing the Overlay
var overlay = new Element('div', {'class':'msgAlert_overlay'});
$$('body').adopt(overlay);
// Placing the Main Div With class name
var main_box = new Element('div', {'class': className});
$$('body').adopt(main_box);
var content_div = new Element('div', {'class':'msgAlert_popup'});
//<a href="javascript:;" class="msgAlert_close"></a>
if(title == '')
title=defaut_title;
content_div.set('html','<div class="msgAlert_header"><h4>'+title+'</h4></div><div class="msgAlert_content">'+text+'</div>');
main_box.adopt(content_div);
content_div.getChildren('a.msgAlert_close');
var footer_div = new Element('div',{'class':'msgAlert_footer'});
var ok_btn = new Element('button');
ok_btn.addEvent('click', function(){
main_box.fade(0);
//overlay.fade(0);
(function(){main_box.dispose(); overlay.dispose(); }).delay(350);
return true;
});
var cancel_btn = new Element('button');
cancel_btn.addEvent('click', function(){
main_box.fade(0);
//overlay.fade(0);
(function(){main_box.dispose(); overlay.dispose();}).delay(350);
return false;
});
ok_btn.set('html','Ok');
cancel_btn.set('html','Cancel');
footer_div.adopt(ok_btn);
footer_div.adopt(cancel_btn);
main_box.adopt(footer_div);
ok_btn.focus();
}
我点击相应按钮后返回TRUE和FALSE。
可以建议以哪种方式去,所以我可以像JS确认框一样访问我的功能:
就像:
if(confirm_box(title, text))
{
alert('Yes');
}
else
{
alert('No');
}
答案 0 :(得分:1)
这不起作用。基本上,你可以使用原生的
if (confirm("are you sure")) { ... } else { ... }
这很好,因为它阻止了UI线程......
如果要复制确认框,则需要使用事件回调方法,因为您的函数不具有返回值。
在伪代码中,这将是:
var confirm_box = function(title, text, onConfim, onCancel) {
...
confirmEl.addEvent("click", onConfirm);
cancelEl.addEvent("click", onCancel);
};
confirm_box("Are you sure?", "Please confirm by clicking below", function() {
alert("yes");
}, function() {
alert("no");
});
在mootools和Classes的上下文中,您可能希望执行一个与事件一起使用的确认类。如果你想要一个例子,请给我一个喊叫。