jQuery Validation Plugin - добавление правил, которые применяются к нескольким полям

Если вы планируете иметь только 1 сеанс для проекта, просто сделайте

:mks

, который создаст файл Session.vim в текущем каталоге, а затем, чтобы открыть сеанс (из того же каталога) :

vim -S

Если вы меняете сеанс и хотите его сохранить:

:mks!

Это сохраняет сеанс, а не файлы!

< / blockquote>

Если вы планируете несколько сеансов, я предпочитаю сохранять их в скрытых файлах в каталоге проекта:

:mks .session-name.vim

Чтобы открыть его (из той же директории):

vim -S .session-name.vim

Сохранить сеанс:

:mks! .session-name.vim

Поскольку сеансы сохраняются в скрытых файлах, чтобы их просмотреть, не забудьте -a

ls -a
29
задан Sparky 22 May 2013 в 16:57
поделиться

3 ответа

Вы можете использовать синтаксис 'getter' следующим образом:

   {
      rules: 
      {
        email: {
            required: true,
            email: true
        },

        first_name: {
            required: true
        },

        get last_name() {return this.first_name},

        password: {
            required: true,
            minlength: 4
        }
      }
   }
0
ответ дан Antonio Clemente 22 May 2013 в 16:57
поделиться

Для моего примера это базовый начальный код:

HTML:

<input type="text" name="field_1" />
<input type="text" name="field_2" />
<input type="text" name="field_3" />

jQuery:

$('#myForm').validate({
    rules: {
        field_1: {
            required: true,
            number: true
        },
        field_2: {
            required: true,
            number: true
        },
        field_3: {
            required: true,
            number: true
        }
    }
});

http: //jsfiddle.net/9W3F7


Вариант 1a) Вы можете вытащить группы правил и объединить их в общие переменные.

var ruleSet1 = {
        required: true,
        number: true
    };

$('#myForm').validate({
    rules: {
        field_1: ruleSet1,
        field_2: ruleSet1,
        field_3: ruleSet1
    }
});

http://jsfiddle.net/9W3F7/1


Вариант 1b) Относится к 1a выше, но зависит от вашего уровня сложности, можно выделить правила, которые являются общими для определенных групп и использовать .extend() для их рекомбинации в бесконечном количестве способов.

var ruleSet_default = {
        required: true,
        number: true
    };

var ruleSet1 = {
        max: 99
    };
$.extend(ruleSet1, ruleSet_default); // combines defaults into set 1

var ruleSet2 = {
        min: 3
    };
$.extend(ruleSet2, ruleSet_default); // combines defaults into set 2

$('#myForm').validate({
    rules: {
        field_1: ruleSet2,
        field_2: ruleSet_default,
        field_3: ruleSet1
    }
});

Конечный результат:

  • field_1 будет требуемое число не менее 3.

  • field_2 будет просто необходимым числом.

  • field_3 будет требуемое число не более 99.

http://jsfiddle.net/9W3F7/2


Вариант 2a) Вы можете назначать классы своим полям на основе желаемые общие правила, а затем назначить эти правила для классов. Используя метод addClassRules, мы берем составные правила и превращаем их в имя класса.

HTML:

<input type="text" name="field_1" class="num" />
<input type="text" name="field_2" class="num" />
<input type="text" name="field_3" class="num" />

jQuery:

$('#myform').validate({ // initialize the plugin
    // other options
});

$.validator.addClassRules({
    num: {
        required: true,
        number: true
    }
});

http://jsfiddle.net/9W3F7/4/


Опция 2b) Основное отличие от варианта 2a состоит в том, что вы можете использовать это для назначения правил динамически создаваемым элементам ввода, вызывая метод rules('add') сразу после их создания. Вы могли бы использовать class в качестве селектора, но это не обязательно. Как вы можете видеть ниже, мы использовали селектор подстановочных знаков вместо class.

Метод .rules() должен вызываться в любое время после вызова .validate().

jQuery:

$('#myForm').validate({
    // your other plugin options
});

$('[name*="field"]').each(function() {
    $(this).rules('add', {
        required: true,
        number: true
    });
});

http://jsfiddle.net/9W3F7/5/


Документация:

88
ответ дан Sparky 22 May 2013 в 16:57
поделиться

Если я вас правильно понял, вы хотите применить множество правил ко многим полям, которые могут отличаться в некоторых правилах, но вам лень повторять те же правила для других полей. Однако, с помощью jQuery validate можно иметь более одного правила в одном поле ввода. Просто используйте обозначение массива здесь.

Чтобы реализовать ваш вариант использования, просто добавьте data атрибутов в каждое поле ввода с правилами, которые вы хотите применить к нему. В лучшем случае используйте формат json в кодировке URL, так что вам просто нужен один атрибут data для каждого поля ввода. E. g.:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>validate test</title>
</head>
<body>
<form id="myForm" name="myForm" method="post" action="www.example.com/my-url">
    <input type="text" name="txt1" data-rules="%7B%22required%22%3Atrue%2C%22minlength%22%3A2%2C%22maxlength%22%3A10%7D" />
    <input type="text" name="txt2" data-rules="%7B%22required%22%3Atrue%2C%22minlength%22%3A2%2C%22maxlength%22%3A10%7D" />
    <input type="number" name="number1" data-rules="%7B%22required%22%3Atrue%2C%22number%22%3Atrue%2C%22min%22%3A1%2C%22max%22%3A999%7D" />
    <input type="email" name="email1" data-rules="%7B%22required%22%3Atrue%2C%22email%22%3Atrue%2C%22minlength%22%3A20%7D" />
    <input type="email" name="email2" data-rules="%7B%22required%22%3Atrue%2C%22email%22%3Atrue%2C%22minlength%22%3A20%7D" />
</form>
<script type="text/javascript">
    var $field = null;
    var rules = {};

    $('#myForm input, #myForm textarea').each(function (index, field) {
        $field = $(field);
        rules[$field.attr('name')] = JSON.parse(decodeURIComponent($field.attr('data-rules')));
    });

    $('#myForm').validate(rules);
</script>
</body>
</html>

Основная технология проста:

  1. Создайте свои поля с атрибутом `data-``.
  2. Обведите каждое поле ввода, чтобы получить правила, которые вы хотите применить к нему.
  3. Примените собранные вами правила к элементу формы

Вы также можете использовать группы ввода с одинаковыми валидаторами, например, e. г. используя классы для него и предопределенные переменные JavaScript с объектом rules. Я думаю, у вас есть идея, как изящно лениться; -)

0
ответ дан alpham8 22 May 2013 в 16:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: