2013-01-18 20 views
8

से वापसी के साथ जावास्क्रिप्ट अलर्टिफ़ाई मैं अपनी सभी पुष्टि स्क्रिप्ट के लिए एक पुष्टिकरण संवाद के रूप में alertify.js का उपयोग करने का प्रयास कर रहा हूं। लेकिन यह नियमित जेएस confirm की तरह काम नहीं कर रहा है। कोड में नीचे मैं कभी नहीं एक return trueपुष्टि

function aConf (mes) { 
    alertify.confirm(mes, function (e) { 
     return e; 
    }); 
} 

<a href="#" onclick="if(aConf(\'Are you sure you wish to remove this?\')) { function(); } return false;">Delete</a> 
बेशक

मिल अगर मैं जे एस 'confirm यह काम करता है के साथ aConf बदलें। तो alertify क्यों मुझे वापस नतीजे भेज रहा है?

उत्तर

9

क्योंकि पुष्टि एक अवरोधक फ़ंक्शन है (कोई जावास्क्रिप्ट तब तक चलने तक नहीं होगा जब तक यह सत्य/गलत न हो), और अलर्ट अवरोधन (जेएस निष्पादित करता है)। अलर्टिफ़ तुरंत एक सच्चा/झूठा नहीं लौटाता है, लेकिन इसके बजाय, यह शायद तुरंत अपरिभाषित हो जाता है, फिर उपयोगकर्ता ठीक या रद्द होने के बाद बाद में कॉलबैक फ़ंक्शन को कॉल करता है। उस कॉलबैक फ़ंक्शन से वापसी मान आपके उदाहरण में कोई प्रभाव नहीं डालता है, क्योंकि ऑनक्लिक कोड पहले से ही समाप्त हो चुका है (क्योंकि यह गैर-अवरुद्ध है)।

आप यह मानते हुए उपयोग कर रहे हैं: https://github.com/fabien-d/alertify.js/

यह कैसे यह वास्तव में एक कॉलबैक फ़ंक्शन के साथ काम करता है, नहीं एक वापसी मूल्य:

alertify.confirm(message, function (e) { 
    if (e) { 
     //after clicking OK 
    } else { 
     //after clicking Cancel 
    } 
}); 

अपने कोड नमूने के लिए, आप कुछ इस तरह की कोशिश कर सकते:

function performDelete (a_element) { 
    // perform your delete here 
    // a_element is the <a> tag that was clicked 
} 

function confirmAction (a_element, message, action) { 
    alertify.confirm(message, function(e) { 
     if (e) { 
      // a_element is the <a> tag that was clicked 
      if (action) { 
       action(a_element); 
      } 
     } 
    }); 
} 

<a href="#" onclick="confirmAction(this, 'Are you sure you wish to remove this?', performDelete); return false;">Delete</a> 

संपादित करें: एक सामान्य पुष्टि संवाद होने के लिए अपडेट किया गया है जो उपयोगकर्ता कॉल ठीक होने पर कॉलबैक फ़ंक्शन को कॉल करता है।

+0

यह समस्या है। मैं इसे हर बार कॉल करने के लिए एक नया समारोह नहीं बनाना चाहता हूं। मैं प्रदर्शित करने और वापस करने के लिए एक सामान्य समारोह चाहता था। धन्यवाद। – jfreak53

+0

क्या आपका मतलब है कि, यदि उपयोगकर्ता ठीक क्लिक करता है तो आप लिंक को इसके href पर नेविगेट करना चाहते हैं? या क्या कोई जावास्क्रिप्ट है जो उपयोगकर्ता को ठीक क्लिक करता है तो कार्रवाई करता है? मेरा अद्यतन उत्तर देखें। – Levi

+0

नहीं, लेकिन जो आपने ऊपर पोस्ट किया है, मैं अब जो कुछ चाहता हूं उसे करने के लिए ट्विक कर सकता हूं :) धन्यवाद। – jfreak53