2013-02-16 9 views
11

मेरे पास पुष्टि के साथ सदस्य खाता हटाने के लिए निम्न HTML और jquery कोड हैं। लेकिन कोड काम नहीं कर रहा है: भले ही मैं पॉप-अप विंडो में "रद्द करें" पर क्लिक करता हूं, अनुरोध अभी भी सबमिट किया गया है और खाता हटा दिया गया है। मुझे इसे कैसे ठीक करना चाहिए? धन्यवाद।jQuery: बटन क्लिक पुष्टिकरण

HTML:

<button class="member" href="/admin?arg1=deleteMember" onclick="return confirm('Are you sure?')">Delete member</button> 

jQuery:

$(document).ready(function() { 
    $('.member').click(function() { 
    var url = $(this).attr('href'); 
    $('#content').load(url); 
     return false; 
    }); 
}); 
+0

क्या आप कुछ सर्वर साइड कोड पोस्ट कर सकते हैं? – will

+0

बस 'ऑनक्लिक' – mshsayem

+0

के बजाय फ़ंक्शन के अंदर 'पुष्टिकरण' कॉल डालें, यहां कोई सर्वर-साइड कोड आवश्यक नहीं है, यह क्लाइंट-साइड समस्या है। – basic6

उत्तर

26
$(document).ready(function() { 
    $('.member').click(function() { 
    if (confirm('Are you sure?')) { 
     var url = $(this).attr('href'); 
     $('#content').load(url); 
    } 
    }); 
}); 

फिर निकालें onclick HTML तत्व से जोड़कर देखते हैं।

+0

क्या मुझे इसके लिए jquery फ़ाइल चाहिए? – NewbieCoder999

+0

@ न्यूबीकोडर 999 हां, आपको इस कोड का उपयोग करने के लिए इच्छित पेज पर jQuery शामिल करना होगा। –

+1

@ न्यूबीकोडर 999: तकनीकी रूप से, यह jQuery के बिना सादे जावास्क्रिप्ट में किया जा सकता है। लेकिन मूल सवाल jQuery का उपयोग करता है। – basic6

3

आपने अपनी घटनाओं को दो तरीकों से घोषित कर दिया है। एक इनलाइन इवेंट हैंडलर का उपयोग करता है, और एक JQuery का उपयोग करता है। वे return false पर उसी तरह प्रतिक्रिया नहीं करते हैं।

एक JQuery ईवेंट हैंडलर में, return false दोनों ने रास्ते में घटना के प्रचार बंद हो जाता है और डिफ़ॉल्ट व्यवहार ब्राउज़र आवेदन किया है | रोकता है। नियमित इनलाइन ईवेंट हैंडलर में, यह केवल डिफ़ॉल्ट व्यवहार को रोक देता है। इस बटन के मामले में, बात करने के लिए कोई डिफ़ॉल्ट व्यवहार नहीं है। यह सिर्फ एक बटन है। इसलिए यदि आप "रद्द करें" पर क्लिक करते हैं तो यह खुशी से झूठी वापसी करता है, फिर अगले JQuery ईवेंट को चलाने के लिए आगे बढ़ता है।

इस समस्या को हल करने के लिए, सभी तर्कों को एक ही स्थान पर रखना संभव है- या तो JQuery या इनलाइन ईवेंट में, या इनलाइन ईवेंट एक फ़ंक्शन को कॉल करें जहां आप सभी तर्क निष्पादित करते हैं।

उदाहरण के लिए:

$(function() 
{ 
    $('.member').click(function() 
    { 
     var href = $(this).attr('href'); 
     if (/delete/.test(href)) if (!confirm('Are you sure?')) return; 
     $('#content').load(href); 
    }); 
}); 
3

एक button (या एक input type="button") के लिए एक क्लिक हैंडलर में false रिटर्निंग कोई डिफ़ॉल्ट एक input type="submit" बटन या लिंक के साथ की तरह बंद करने के लिए, व्यवहार है क्योंकि वहाँ, कोई प्रभाव नहीं है।

टैग में onclick विशेषता निकालें, और jQuery क्लिक हैंडलर में confirm फोन:

$(document).ready(function() { 

    $('.member').click(function() { 
    if (window.confirm('Are you sure?')) { 
     $('#content').load($(this).attr('href')); 
    } 
    }); 

}); 
2

ठीक है। इन वैध उत्तरों में से किसी एक को देखने से पहले मैंने इसे अपने आप से बाहर निकाला। मैं तो बस किसी को भी प्रयास करने के लिए के लिए मेरा फेंक करने जा रहा हूँ:

पहले एचटीएमएल

1: मान लीजिए इस बटन आप उपयोगकर्ता के लिए प्रस्तुत कर रहे हैं है:

<button id="btn_to_check">Do Something</button> 

2 : अब अगर उपयोगकर्ता #btn_to_check बटन पर क्लिक करता है तो आप उन्हें अपने इरादे की पुष्टि करने के लिए दो बटन के साथ एक पुष्टिकरण विंडो के साथ प्रस्तुत करते हैं (यानी स्वीकार करें और वापस जाएं):

<div id="btn_confirmation_window" style="display:none"> 
    <button id="accept" value="true">accept</button> 
    <button id="go_back" value="false">go back</button> 
</div> 

अब JavaScript

$('#btn_to_check').on('click', function(){ 
    confirmationWindow(); 
}); 

function confirmationWindow(){ 
    $('#btn_confirmation_window').fadeIn(); //or show() or css('display','block') 
    $('#btn_confirmation_window button').on('click', function(){ 
      var confirm= $(this).attr('value'); 
      if (confirm=='true') { 
       //Code if true e.g. ajax 
      } else if (confirm=='false'){ 
       //Code if false 
      } 
     } 
} 

आशा है कि यह मदद करता है!

+0

प्लगइन जैसे हैं [jQuery UI संवाद] (https://jqueryui.com/dialog/#modal-confirmation) या [jquery.confirm] (http://myclabs.github.io/jquery.confirm/), वे सभी घंटियाँ और सीटी के साथ आओ। ऐसा मैनुअल दृष्टिकोण स्पष्ट रूप से काम करता है, लेकिन आपको खुद को स्टाइल करना होगा और आप मूल रूप से प्रत्येक प्रश्न (कोड डुप्लिकेशन) के लिए एक नई पुष्टि स्क्रिप्ट लिख रहे हैं। – basic6