Если я вас правильно понял, вы хотите применить множество правил ко многим полям, которые могут отличаться в некоторых правилах, но вам лень повторять те же правила для других полей. Однако, с помощью 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. Я думаю, у вас есть идея, как изящно лениться; -)
Вы пробовали также поместить объявление модуля в элемент? Когда я запускаю dev с помощью Cassini, мне обычно приходится размещать модули, чтобы заставить их работать.
Cassini, веб-сервер разработки, поставляемый с IIS, использует синтаксис модуля IIS6, поэтому вы должны продублировать добавление модуля следующим образом
<system.web>
<httpModules>
<add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" />
</httpModules>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<remove name="MinimizeModule" />
<add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule"
preCondition="managedHandler" />
</modules>
</system.webServer>
Обратите внимание, что я также добавил предварительное условие в ваши настройки IIS7