2012-12-19 24 views
10

का जवाब दे जावास्क्रिप्ट को क्रियान्वित नहीं मैं अपने पृष्ठ JQuery संवाद विजेट का उपयोग किया जाता है पर एक संवाद बॉक्स है। मैं कार्यों पृष्ठ पेज के लिए Postbacks को गति प्रदान और विभिन्न काम करेंगे पर भिन्न बटन पर क्लिक करेंगे जो है करने के लिए दो बटन की स्थापना की है। जब संवाद बॉक्स मोडल है: झूठी, संवाद बॉक्स प्रासंगिक clickButton समारोह निष्पादित करेगा, फिर भी, जब मैं मोडल सेट: सच, बटन क्लिक किया नहीं किया जाएगा, हालांकि समारोह दर्ज किया गया है।जब एक JQuery संवाद बॉक्स

मुझे लगता है मैं के बारे में क्या मोडल कुछ याद आ रही है: सच बटन के साथ जुड़े कार्यों को क्रियान्वित करने के संबंध में है।

नीचे मेरी जावास्क्रिप्ट

function displayQuoteToCashMessage() { 
     //this is where we do that alert for the QuoteToCash request stuff 
     $("#<%=divQuoteToCashAlert.ClientId %>").show(); 
     $("#<%=divQuoteToCashAlert.ClientId %>").dialog({ 
      modal: false, 
      resizable: false, 
      buttons: { 
       "Ok": function() { 
        //save confirmations 
        clickButton(true); 
        $(this).dialog("close"); 
       }, 
       "No": function() { 
        clickButton(false); 
        $(this).dialog("close"); 
       } 
      } 
     });   
    } 

    function clickButton(b) { 
     //do something with b 
     document.getElementById(btnSave).click() 
    }; 
+2

पांच इस प्रश्न के लिए upvotes? क्या मैं कुछ भूल रहा हूँ? – j08691

+0

@ j08691 कि 9 lol –

उत्तर

4

मॉडल, की घटनाओं/और कार्यों के सभी प्रकार से बचाता है ओवरले पर ही, और किसी भी डोम घटनाओं यह नीचे है। लेकिन नियमित रूप से समारोह, कॉल करने के लिए आपके जैसे: clickButton()ठीक कर रहे हैं, अगर आपको लगता है कि समारोह की शुरुआत में एक सूचना आप इसे वहाँ हो जाता है देखेंगे।

समस्या आप कर रहे हैं, कि आप click के साथ बातचीत और एक डोम तत्व मॉडल से कम है कि (जो यहाँ क्या इनकार किया जा रहा है है)

// It gets here without a problem 
function clickButton(b) { 

    // But this event here is what *modal* is preventing. 
    document.getElementById(btnSave).click(); 
} 

की कोशिश कर रहे है क्या मैं हमेशा करें, पहले, को बंद करें किसी भी बाहरी स्क्रिप्ट को निष्पादित करें (विशेष रूप से यदि मुझे पता है कि वे डोम ईवेंट ट्रिगर करने का प्रयास करते हैं)। ऐसा करने से, आप कोई समस्या नहीं होगा।

jsFiddle DEMO

buttons: { 
    "Ok": function() { 

    $(this).dialog('close'); 

    // now wait a 100 ms for it to fully close 
    // this is mainly for the slow browsers, "just in case" really 

    setTimeout(function() { 
     clickButton(); // now we call your function (knowing the modal is gone) 
    }, 100); 
    } 
} 

छोटे देरी सिर्फ बैठाना, अन-ध्यान देने योग्य है, और जब modal:true रखने आप अपने कार्य को चलाने दूँगी

2

close घटना की कोशिश करो कि:

var okButtonWasClicked = false; 
$("#<%=divQuoteToCashAlert.ClientId %>").dialog({ 
    buttons: { 
     "Ok": function() { 
      okButtonWasClicked = true; 
      $(this).dialog("close"); 
     }, 
     "No": function() { 
      okButtonWasClicked = false; 
      $(this).dialog("close"); 
     } 
    }, 
    close: function() { 
     if(okButtonWasClicked) { 
      clickButton(true); 
     } else { 
      clickButton(false); 
     } 
}); 
+0

+1 अच्छा विकल्प मुझे यह पसंद कर –

संबंधित मुद्दे