jQuery, если не в функции submit, больше не работает

0

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

Сначала вы видите функцию для текстовых полей с 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 функции wz_validation .
  • 0
    Хорошо, но эта функция работает нормально. Позже добавили wz_radio_shipping, и это дало проблемы.
Показать ещё 1 комментарий
Теги:
validation

1 ответ

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 не работает.
  • 0
    И у меня есть одна дополнительная функция, которая называется wz_val_select (), добавила ее в функцию последней отправки и также больше не работает.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню