2013-12-16 3 views
0

Я работаю над формой простой проверки в моем проекте. Я проверяю все поля с validate = "true" и проверяет набор переключателей с одной дополнительной функцией.jQuery if not in function submit не работает

Сначала вы видите функцию для текстовых полей с validate = "true", затем функцию wz_radio_shipping для переключателей, а затем я проверяю обе функции и возвращаю true для false для формы submit.

В функции wz_radio_shipping я использую a! в выражении if. Делая это, переключатели переключателей успешно проверяются, если они пусты, но моя форма больше не может подаваться. Если я удалю! проверка переключателя не работает, но моя форма теперь может быть отправлена.

Я попытался изменить! to == "", но это не работает.

Может кто-нибудь помочь мне с этим?

$(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

Попробуйте восстановить исходные функции только с коррекцией в логическом операторе «&&». –