2012-08-31 15 views
9

मैं कस्टम पुष्टिकरण संवाद के बजाय ट्विटर बूटस्ट्रैप मोडल का उपयोग करने का प्रयास कर रहा हूं।संवाद की पुष्टि करने के बजाय ट्विटर बूटस्ट्रैप मोडल का उपयोग

मेरी समारोह

function getConfirm(confirmMessage){ 
    if (confirmMessage == undefined){ 
     confirmMessage = ''; 
    } 
    $('#confirmbox').modal({ 
    show:true, 
     backdrop:false, 
     keyboard: false, 
    }); 

    $('#confirmMessage').html(confirmMessage); 
    $('#confirmFalse').click(function(){ 
     $('#confirmbox').modal('hide'); 
     return false; 
    }); 
    $('#confirmTrue').click(function(){ 
     $('#confirmbox').modal('hide'); 
     return true; 
    }); 
} 
</script> 
<div class="modal" id="confirmbox" style="display: none"> 
    <div class="modal-body"> 
     <p id="confirmMessage">Any confirmation message?</p> 
    </div> 
    <div class="modal-footer"> 
     <button class="btn" id="confirmFalse">Cancel</button> 
     <button class="btn btn-primary" id="confirmTrue">OK</button> 
    </div> 
</div> 

समारोह

var confimChange=getConfirm("Do You confirm?"); 
if(confimChange){ 
    alert('perfect you confirmed') 
}else{ 
    alert('why didnt you confirmed??') 
} 

समस्या बुला getConfirm समारोह सही या गलत नहीं लौटा रहा है है।


काम कोड: संशोधनों के बाद

if(receiverListCount > 0){ 
    var confimChange=confirm("Message"); 
    if(confimChange){ 
     resetReceiverList(); 
    }else{ 
     return false; 
    } 
} 

कोड टुकड़ा & परिवर्तन/काम नहीं कर रहा

if(activeDiv == '#upload'){ 
    if(listOfSelectedGroups.length> 0|| receiverListCount > 0){ 
     getConfirm("message",function(result){ 
      if(result){ 
       resetReceiverList(); 
      }else{ 
       return false; 
      } 
     }); 
    } 
} 

अंत में मैं bootboxjs

उत्तर

22

उपयोग करने का फैसला आपका दृष्टिकोण गलत है, यह असीमित रूप से निष्पादित करेगा ताकि वह लौटने से पहले मोडल संवाद बंद होने की प्रतीक्षा न करे। इस तरह कुछ कोशिश करें:

function getConfirm(confirmMessage,callback){ 
    confirmMessage = confirmMessage || ''; 

    $('#confirmbox').modal({show:true, 
          backdrop:false, 
          keyboard: false, 
    }); 

    $('#confirmMessage').html(confirmMessage); 
    $('#confirmFalse').click(function(){ 
     $('#confirmbox').modal('hide'); 
     if (callback) callback(false); 

    }); 
    $('#confirmTrue').click(function(){ 
     $('#confirmbox').modal('hide'); 
     if (callback) callback(true); 
    }); 
} 

getConfirm('Are you sure?',function(result) { 
    // Do something with result... 
}); 

नोट हालांकि आपको केवल एक बार मोडल शुरू करने और घटनाओं को एक बार हुक करने की आवश्यकता है। मैं मोडल बॉडी और आईडी दूंगा और दिखाए जाने से पहले सामग्री को बदल दूंगा।

आपको बैकड्रॉप को भी सही पर सेट करना चाहिए, आप पुष्टि करते हैं कि उपयोगकर्ता को पृष्ठ तक पहुंचने से रोकने की पुष्टि हो।

+0

यह अच्छी तरह से काम करता है लेकिन मेरा फ़ंक्शन कॉनफर्म फ़ंक्शन पाने का इंतजार नहीं कर रहा है। – Ayhan

+0

कमाल का समाधान। धन्यवाद! – Houman

+6

अच्छा समाधान लेकिन कई आमंत्रणों के बाद असंगत रूप से काम करेगा, क्योंकि बटनों को असाइन किए गए कॉलबैक को हटाया नहीं जाता है, और इन सभी का मूल्यांकन एन कॉल के बाद किया जाएगा। यदि आपके पास कोई अन्य ईवेंट संलग्न नहीं है तो निम्नलिखित की तरह कुछ पर्याप्त होगा: '$ ('# confirmFalse')। Off()। क्लिक करें (function() {' –