Если вы планируете иметь только 1 сеанс для проекта, просто сделайте
:mks
, который создаст файл Session.vim
в текущем каталоге, а затем, чтобы открыть сеанс (из того же каталога) :
vim -S
Если вы меняете сеанс и хотите его сохранить:
:mks!
Это сохраняет сеанс, а не файлы!
< / blockquote>Если вы планируете несколько сеансов, я предпочитаю сохранять их в скрытых файлах в каталоге проекта:
:mks .session-name.vim
Чтобы открыть его (из той же директории):
vim -S .session-name.vim
Сохранить сеанс:
:mks! .session-name.vim
Поскольку сеансы сохраняются в скрытых файлах, чтобы их просмотреть, не забудьте
-a
ls -a
Вы можете использовать синтаксис 'getter' следующим образом:
{
rules:
{
email: {
required: true,
email: true
},
first_name: {
required: true
},
get last_name() {return this.first_name},
password: {
required: true,
minlength: 4
}
}
}
Для моего примера это базовый начальный код:
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
}
}
});
Вариант 1a) Вы можете вытащить группы правил и объединить их в общие переменные.
var ruleSet1 = {
required: true,
number: true
};
$('#myForm').validate({
rules: {
field_1: ruleSet1,
field_2: ruleSet1,
field_3: ruleSet1
}
});
Вариант 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.
Вариант 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
}
});
Опция 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
});
});
Документация:
Если я вас правильно понял, вы хотите применить множество правил ко многим полям, которые могут отличаться в некоторых правилах, но вам лень повторять те же правила для других полей. Однако, с помощью 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>
Основная технология проста:
Вы также можете использовать группы ввода с одинаковыми валидаторами, например, e. г. используя классы для него и предопределенные переменные JavaScript с объектом rules. Я думаю, у вас есть идея, как изящно лениться; -)