2011-10-11 84 views
0

我正在開發MooTools確認框函數。其中我有兩個按鈕即OK和CANCEL。MooTools函數返回值

所以我想要點擊確定返回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'); 
} 

回答

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的和類的背景下

,你可能想要做一個確認類的事件,而不是工作。如果你想要一個例子,給我一個呼喊。

+0

是的,這個例子會對我更好理解... – Avinash

+0

我只是擴展了一箇舊的模態類與我一起工作。 http://jsfiddle.net/dimitar/s538U/1/ vs http://jsfiddle.net/dimitar/s538U/(原始模態框) –

+0

,事實上,更精美一點。 http://jsfiddle.net/dimitar/s538U/4/ - 一直意味着在我們的後臺添加確認功能。 :) –