2013-07-04 15 views
5

तो एक ऐसा फॉर्म है जिसे मैं केवल तभी जमा करना चाहता हूं जब AJAX का उपयोग कर डेटाबेस से एक शर्त सत्यापित की जाती है। यदि स्थिति सत्य है तो मैं preventDefault() विधि का उपयोग कर रहा हूं यानी यदि कोई उपयोगकर्ता निवासी नहीं है, तो ajax successs function और preventDefault() में एक वैरिएबल सत्य पर सेट किया गया है, हालांकि, ऐसा करने पर, फ़ॉर्म हमेशा सबमिट करता है। यह AJAX को गलत पर सेट होने पर भी AJAX को समाप्त करने की प्रतीक्षा नहीं करता है। यहां कोड है।सबमिट करने से पहले AJAX को समाप्त करने के लिए फ़ॉर्म का इंतजार कैसे करें?

$('#button').click(function(e) {  
    if ($('#ca_resident').prop('checked') == true) { 
     amount=$('#user-amount').val().replace(/[,]/g,""); 
     project_name=$('#project_name').val(); 
     var not_resident = false; 
     $.ajax({ 
     url: '/main/verify_residence/', 
     type: 'POST', 
     aysnc: false, 
     data: { 
      value: amount, 
      name: project_name 
     }, 
     success: function(data){ 
      $("#verify_residence").html(data); 
      not_resident = true; 
     }, 
     dataType: 'html' 
     }); 
    } 
    if(not_resident){ 
     e.preventDefault(); 
    } 
    }); 
+0

'ajax कॉल करने से पहले और पर डिफ़ॉल्ट रोकने ajax.success' आप कर सकते हैं तो' form.submit() ' – Vogel612

+0

कोशिश वापसी असत्य; e.preventDeafult() के बजाय। –

+1

@ Vogel612 मैंने पहले ऐसा करने की कोशिश की। यह किसी भी स्थिति में जमा करने से फ़ॉर्म को रोकता है। फॉर्म को तब प्रस्तुत करना चाहिए जब कोई उपयोगकर्ता रेजीडेंसी चेक – user2488801

उत्तर

4

जो काम नहीं करेगा। सफलता को सक्रिय कर देगा के बाद:

if(not_resident){ 
     e.preventDefault(); 
    } 

के रूप में यह अतुल्यकालिक है। एक बार सफलता मारा जाता है तो आप हमेशा बटन पर क्लिक रद्द फ़ॉर्म जमा करना:

$('#button').click(function(e) {  
    var $form = $(this).closest('form'); 

    if ($('#ca_resident').prop('checked') == true) { 
     amount=$('#user-amount').val().replace(/[,]/g,""); 
     project_name=$('#project_name').val(); 
     $.ajax({ 
     url: '/main/verify_residence/', 
     type: 'POST', 
     aysnc: false, 
     data: { 
      value: amount, 
      name: project_name 
     }, 
     success: function(data){ 
      $("#verify_residence").html(data); 
      $form.submit(); 
     }, 
     dataType: 'html' 
     }); 
    } 


    e.preventDefault(); 

    }); 
+0

धन्यवाद लुम धन्यवाद नहीं है, लेकिन मुझे क्या चाहिए यदि कोई उपयोगकर्ता निवास की स्थिति में विफल रहता है तो फॉर्म बिल्कुल विपरीत नहीं है। 'सफलता समारोह' में 'e.preventDefault()'। अभी भी कोई भाग्य – user2488801

+0

@ user2488801 यह ऐसा करेगा, अगर 'सफलता' हिट नहीं होती है। फॉर्म जमा नहीं होगा। 'e.preventDefault(); 'फ़ॉर्म को हमेशा सबमिट करने से रोकता है। '$ form.submit(); 'सफलता' होने पर केवल पोस्ट – Liam

+0

'सफलता' एक ऐसा मामला है जब कोई उपयोगकर्ता सत्यापन विफल करता है और आगे देखने की अनुमति नहीं है, यानी कोई फॉर्म सबमिशन नहीं है। – user2488801

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

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