2009-11-20 15 views
5

im एक फ़ॉर्म सत्यापन कर रहे हैं और मैं त्रुटि के लिए इनपुट फ़ील्ड मान्य करने के लिए जब "पर प्रस्तुत" यदि त्रुटि इम jquery.scrollTo का उपयोग कर जाना चाहता हूँ:jquery में जमा करें रद्द करें?

$('#form_inscripcion').submit(function() { 
    //se traen todos los inputs del formulario 
    var $inputs = $('#form_inscripcion :input'); 

    $inputs.each(function() { 
     var encontro_error = validar($(this)); //uses dependence ok 
     if (encontro_error){ 
      $.scrollTo('input#'+$(this).attr('id'), 800); //go to error 
      return false; // dont submit!... but seems not enter here :(
     } 
    }); 

}); 

समस्या, जब त्रुटि does not को रद्द लौटे प्रस्तुत है , return false; लाइन नहीं चलाता है।

यह ठीक काम करता है जब

<form id="form_inscripcion" name="form" method="post" action="some" onsubmit="return false"> 

लेकिन हां, तो होगा प्रस्तुत कभी नहीं। मुझे आशा है कि आप मुझे समझेंगे :) धन्यवाद :)

उत्तर

12

मैं e.preventDefault() इस तरह का प्रयोग करेंगे:

$('#form_inscripcion').submit(function(e) { 
    //se traen todos los inputs del formulario 
    var $inputs = $('#form_inscripcion :input'); 

    $inputs.each(function() { 
     var encontro_error = validar($(this)); //uses dependence ok 
     if (encontro_error){ 
      $.scrollTo('input#'+$(this).attr('id'), 800); //go to error 
      e.preventDefault(); // Cancel the submit 
      return false; // Exit the .each loop 
     } 
    }); 
}); 

बस समारोह कॉल प्रस्तुत (कोड ब्लॉक में पहली पंक्ति) को e पैरामीटर की आपूर्ति सुनिश्चित करें।

6

आप #each फ़ंक्शन से वापस लौट रहे हैं, #submit पर नहीं। इस के बजाय कुछ ऐसा कार्य करें:

$('#form_inscripcion').submit(function(e) { 
     //se traen todos los inputs del formulario 
     var $inputs = $('#form_inscripcion :input'); 
     var returnVal = true; 
     $inputs.each(function() { 
       var encontro_error = validar($(this)); //uses dependence ok 
       if (encontro_error){ 
         $.scrollTo('input#'+$(this).attr('id'), 800); //go to error 
         returnVal = false; 
         return false; // returning false here breaks out of $.each. 
       } 
     }); 
     return returnVal; 
}); 

तुम भी e.preventDefault() कर सकता दर्ज किए जाने से रोकने के लिए प्रपत्र।

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