2017-03-27 83 views
-1

我有多个复选框,其中一个必须检查。 单击提交“标志”为true并且preventDefault()工作时,所有内容都第一次正常运行。jQuery - 撤消防止默认

但是“解除绑定”在“flag”为false时不起作用。

此外,如果其他必填字段未填写,则不应提交表单。

<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

从哪里调用此函数'myvalidate'?你是否也可以提供html部分 –

+0

@Aman Rawat,返回false不起作用,代替函数(e)。 –

回答

0

它看起来并不像你需要解除绑定。尝试将$(this).unbind('submit').submit();更改为$(this).submit();