2017-03-27 6 views
-1

J'ai plusieurs cases à cocher et l'une d'entre elles a dû être vérifiée. Tout se passe bien pour la première fois lorsque vous cliquez sur Envoyer le "drapeau" est vrai et le preventDefault() fonctionne.jQuery - annuler pour empêcher le défaut

Mais "unbind" ne fonctionne pas si "flag" est faux.

De même, le formulaire ne doit pas être envoyé si les autres champs obligatoires ne sont pas remplis.

<form action="submit/submitPref.php" method="post" onSubmit="return myvalidate()"> 
     <div class="section mt"> 
      <p class="my_comp">My Compensation Package can be</p> 
      <div class="clearfix"> </div> 
     </div> 
     <div class="clearfix"> </div> 
     <div class="section pre_btm compn"> 
      <div class="col-xs-6 pr-none half pl0 mrgrht"> 
      <p>Salary Only per Year</p> 
      <input name="salOnlyPY" type="checkbox" class="chk txtrht" value="1"> 
      </div> 
      <div class="col-xs-6 pr-none half pl0 mrgrht"> 
       <p>Salary Only per Hour</p> 
       <input name="salOnlyPH" type="checkbox" class="chk txtrht" value="1"> 
      </div> 
      <div class="col-xs-6 pr-none half pl0 mrgrht"> 
       <p>Salary with Bonus</p> 
       <input name="salWithBonus" type="checkbox" class="chk txtrht" value="1" /> 
      </div> 
      <div class="col-xs-6 pr-none half pl0 mrgrht"> 
       <p>Commission Only</p> 
       <input name="commOnly" type="checkbox" class="chk txtrht" value="1"> 
      </div> 
      <div class="col-xs-6 pr-none half pl0 mrgrht"> 
       <p>Salary & Commission</p> 
       <input name="salNcomm" type="checkbox" class="chk txtrht" value="1"> 
      </div> 
      <div class="clearfix"> </div> 
     </div> 

     <!--THE FORM ALSO HAS OTHER MANDATORY FIELDS--> 
    </form> 
 

    $(document).ready(function(){ 

     function myvalidate() { 
      flag=true; 

      $('.txtrht:checked').each(function(){ 
       flag=false; 
      }); 
      if(flag){ 
       $('.my_comp').addClass('required'); 
       $("form").submit(function(e){ 
        e.preventDefault(); 
       }); 
      } 
      else 
      { 
       if($('.my_comp').hasClass('required')) 
       { $('.my_comp').removeClass('required'); } 
       $("form").submit(function(e){ 
        e.preventDefault(); 
        $(this).unbind('submit').submit(); 
       }); 
      } 
     } 
    }); 
+0

d'où vous appelez cette fonction 'myvalidate'? Pouvez-vous fournir la partie html ainsi –

+0

@Aman Rawat, return false ne fonctionne pas aussi, à la place de la fonction (e). –

Répondre

0

Il ne semble pas que vous avez besoin d'un unbind. Essayez de remplacer $(this).unbind('submit').submit(); par $(this).submit();