2013-12-16 59 views
0

我在表單簡單驗證在我的項目工作。我用validate =「true」檢查所有的字段,並檢查一組單選按鈕和一個額外的功能。jQuery如果沒有在函數提交不再工作

首先你看到validate =「true」的文本字段的函數,然後是單選按鈕的函數wz_radio_shipping,然後檢查兩個函數並返回表單提交的真假。

在函數wz_radio_shipping中,我使用了!在if語句中。通過這樣做,單選按鈕如果它們是空的,但是我的表單不能再提交,就可以成功進行檢查。如果我刪除!單選按鈕檢查不再工作,但現在我的表單可以提交。

我試圖改變!到==「」,但這是行不通的。

有人可以幫助我嗎?

$(wz_form).submit(function() { 

    function wz_validation() { 
     var value=false; 
     var txtboxes=$('input[validate="true"]'); 
     for(var i=0;i<txtboxes.length;i++) { 

      if($(txtboxes[i]).val()=="") { 
       $(txtboxes[i]).addClass('red_border'); 
       value=false; 
      } 
      else{ 
       $(txtboxes[i]).removeClass('red_border'); 
       value=true; 
      } 
     } 
     return value; 
    } 


    function wz_radio_shipping() { 
     if($("#shipping_form")) { 
      if(!$('input[name=wz_shipping]:checked', '#shipping_form').val()) { 
       $("#checkout_shipping").addClass('red_border'); 
       return false; 
      } 
      else{ 
       $("#checkout_shipping").removeClass('red_border'); 
       return true;  
      } 
     } 
    } 

    if(wz_validation() & wz_radio_shipping()) { 
     return true;  
    } 
    else{ 
     return false; 
    } 

}); 
+0

你有一些重大的邏輯缺陷在你'wz_validation'函數。 –

+0

好的,但這個功能工作正常。稍後添加wz_radio_shipping,這給了問題。 – Robbert

+0

然後看我的答案。 –

回答

1

你的主要問題是在這裏:

if(wz_validation() & wz_radio_shipping()) { // <-- notice single "&" 

它應該是:

if(wz_validation() && wz_radio_shipping()) { // <-- now is double "&" 

試試這個優化的解決方案:

$(function() { 
    function wz_validation() { 
     var ok = true; 

     $('input[validate="true"]').each(function() { 
      if($(this).val() == '') { 
       ok = false; 
       $(this).addClass('red_border'); 
      } 
      else $(this).removeClass('red_border'); 
     }); 

     return ok; 
    } 

    function wz_radio_shipping() { 
     var form = $("#shipping_form"); 
     if(form.length) { 
      if(form.find('input[name=wz_shipping]:checked').length == 0) { 
       $("#checkout_shipping").addClass('red_border'); 
       return false; 
      } 
      else{ 
       $("#checkout_shipping").removeClass('red_border'); 
       return true;  
      } 
     } 
    } 

    $(wz_form).submit(function() { 
     return wz_validation() && wz_radio_shipping(); 
    }); 
}); 
+0

感謝您的編輯!只有wz_radio_shipping功能不起作用。 – Robbert

+0

我有一個額外的函數稱爲wz_val_select(),在最後一次提交函數中添加了這個函數,並且不再工作。 – Robbert

+0

嘗試使用「&&」邏輯運算符中的更正來恢復原始功能。 –