JQuery несколько форм проверки

0

У меня есть несколько форм на другой странице, есть ли способ написать single function которая будет заниматься validation или я буду писать код для каждой формы separately.

$(document).ready(function () {   
    $('#fvujq-form1').validate();
    $('#fvujq-form2').validate();
});

Примечание. Каждая форма имеет свои собственные правила.

Обновить:

$("form").each(function () {
        $(this).validate({

            rules: {

                username: {
                    required: true
                },
                password: {
                    required: true
                },
                name: {
                    required: true,                        
                },
                cperson: {
                    required: true,                       
                }
            },
            submitHandler: function (form) {
                return false; //temporarily prevent full submit
            }
        });
    });

Теперь username и password различной формы и name и person имеют разную форму на разных страницах. Имеет ли право действовать таким образом, чтобы иметь общую форму представления.

  • 1
    если каждая форма имеет разные правила, то лучше использовать другой код
  • 0
    Я бы не стал использовать этот подход. Я бы просто просмотрел входные данные, определил, какой тип данных мы ожидаем, и проверил, что они есть (или нет, если у вас есть дополнительные поля), оставив проверку наличия всех правильных полей для проверки на стороне сервера. Причина этого в том, что обходить проверку формы JavaScript на стороне клиента довольно просто. (см. мой ответ)
Теги:

3 ответа

2

Вы должны проверить, используя $('form').validate(); , если это не работает, используйте:

$('form').each(function(){
    $(this).validate();
});
  • 0
    Посмотрите на мой обновленный пост
  • 0
    Этот подход сработал для меня, но я обнаружил, что попадаю в отдельную проверку для каждого лагеря. Правила и методы, которые вы можете добавить, чтобы проверка работала для одной формы, могут отрицательно повлиять на другие формы. Это было особенно обременительно в отношении групп флажков для меня. Я собираюсь реорганизовать свой HTML / JS в отдельные схемы проверки, правила, сообщения и т. Д. Вместо того, чтобы пытаться сделать все это за одну проверку.
2

Вы можете использовать селектор $ ("form") для проверки всех элементов формы типа, если это то, о чем вы просите. Я бы не рекомендовал это специально для страницы с несколькими формами.

  • 0
    Я использую это, будет ли это работать, если правила разные для двух форм.
  • 0
    Я бы подумал, что если бы у вас было несколько форм на одной странице, это бы подтвердило их все сразу, я не знаю, хотели бы вы это иметь.
Показать ещё 2 комментария
1

Если вы можете указать каждому элементу ввода в своей форме собственный атрибут xx-field-type например:

<input type='text' xx-field-type='email'/>

Вы можете использовать:

jQuery.fn.extend({
    validate: function() {
        var input_list = this.find("input");
        for (var i = 0; i < input_list.length; i++) {
            switch(input_list[i].attr("xx-field-type")) {
                case 'username':
                    var value = input_list[i].val();
                    if (value.match(/^[a-z0-9]+$/) != true) {
                        return false;
                    }
                    break;
                case 'password':
                    var value = input_list[i].val();
                    if (value.match(/[a-z]+/) != true 
                        || value.match(/[A-Z]+/) != true
                        || value.match(/[0-9]+/) != true) {
                        return false;
                    }
                    break;
                case 'email':
                    var value = input_list[i].val();
                    if (value.match(/^[a-z0-9]+@[a-z0-9]$/) != true) {
                        return false;
                    }
                    break;
                default:
                    continue;
            }
        }
        return true;
    }
});

Это будет проходить через каждое поле ввода формы, проверьте значение атрибута xx-field-type и используйте это, чтобы выбрать правила, которые должно соответствовать значение. Возвращает false, если какой-либо отказ в противном случае возвращает true.

Если вы не можете добавить пользовательские атрибуты, вы можете использовать классы, но это означает, что hacky обозначает тип формы, используя атрибут, предназначенный для установки связанных с дисплеем материалов.

Непроверенные

типы полей, которые я использовал, и регулярные выражения предназначены только для демонстрации.

Ещё вопросы

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