2012-08-13 6 views
11

से "वापसी मूल्य" की प्रतीक्षा करें ठीक है, मैं जावास्क्रिप्ट गुरु का कोई मतलब नहीं हूं, और शायद मैं अभी भी डेस्कटॉप सॉफ्टवेयर विकास के संदर्भ में सोच रहा हूं, लेकिन यही वह है जिसे मैं प्राप्त करने की कोशिश कर रहा हूं:जावास्क्रिप्ट मोडल

  • मैं Twitter Bootstrap's Modals
  • कुछ मामलों में उपयोग कर रहा हूँ, इससे पहले कि एक कार्रवाई जगह लेता है, मैं के साथ एक यह सत्यापित करना चाहते हैं "आप सुनिश्चित हैं?" (हां/नहीं) मॉडल संवाद।

प्रश्न:

  • आंतरिक तर्क क्या होना चाहिए?

मेरा मतलब है:

  • उपयोगकर्ता क्लिक करता है buttonA (जो अंततः actionA करता है)
  • मैं मोडल शुरू करने के लिए, इनपुट के लिए प्रतीक्षा (2 बटन के दोनों चाहते हैं - हाँ/नहीं) और/या कुछ जाँच दिनचर्या के लिए यह (बटन होना चाहिए मोडल के लिए यह मेरा एचटीएमएल कोड प्रदर्शन (या नहीं) actionA

से पहले पास - किसी भी तरह - अपनेके माध्यम से अभिनयजावास्क्रिप्ट दिनचर्या?) - यह भी ध्यान दें कि #confirmMessage परिवर्तनीय होने जा रहा है।

<div class="modal fade hide" id="confirmAlert"> 
    <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal">x</button> 
     <h3 id="confirmTitle">Are you sure?</h3> 
    </div> 

    <div class="modal-body"> 
     <p id="confirmMessage">Body</p> 
    </div> 
    <div class="modal-footer"> 
     <a href="#" class="btn" data-dismiss="modal">Cancel</a> 
     <a href="#" class="btn btn-danger">Yes</a> 
    </div> 
</div> 

बस एक विचार:

  • javascript:functionToExec को checkBeforeExec(message,functionToExec)
  • सेट #confirmMessage संदेश और हाँ 'href करने के लिए की तरह एक समारोह
  • भावना बनाता लिखें?

मैं जानता हूँ कि यह थोड़ा भ्रमित लग सकता है - लेकिन मैं केवल सबसे जावास्क्रिप्ट के अनुकूल तरीके से क्या करना है यह होगा नहीं पता ...

उत्तर

10

मैं मोडल के चारों ओर एक संवाद प्रबंधक बनाया , confirm सहायक समारोह है कि अनिवार्य रूप से यह करता है के साथ:

var callback = function(result) { 
    alert(result); 
}); // define your callback somewhere 

$('#confirmAlert').on('click', '.btn, .close', function() { 
    $(this).addClass('modal-result'); // mark which button was clicked 
}).on('hidden', function() { 
    var result = $(this).find('.modal-result').filter('.btn-danger').length > 0; // attempt to filter by what you consider the "YES" button; if it was clicked, result should be true. 

    callback(result); // invoke the callback with result 
}); 

इसके अलावा, आप दोनों रद्द करें और हाँ बटन data-dismiss="modal" बनाना चाहिए।

Here's a fiddle, with a simple example of my dialog manager

ध्यान दें, कि अगर आप बूटस्ट्रैप 3 उपयोग कर रहे हैं, तो आप एक हैंडलर hidden.bs.modal घटना के बजाय hidden का जोड़ना चाहिए।

+0

धन्यवाद एक बहुत कुछ का उपयोग कर सकते हैं! वह बहुत उपयोगी था!;-) –

+0

'आपको रद्द करें और हां बटन दोनों बनाना चाहिए' - यदि आप ईवेंट हैंडलर में ईवेंट प्रचार रोकते हैं तो यह काम नहीं कर सकता है। उस स्थिति में, हाँ पर क्लिक करने पर 'मोडल (' छुपाएं ') का उपयोग करें। – Medorator

1

jQuery के साथ आप की तरह

$('.btn').click(function(){ 
    val=$(this).val() 
    if(val=='Yes'){ 
    //continue the processing 
    } 
})