У меня есть приложение, построенное на asp.net MVC и использующее бутстрап для twitters. Чтобы получить стили бутстрепа, я добавил:jquery, bootstrap, validation, & wysiwyg
$.validator.setDefaults({
highlight: function (element) {
$(element).closest(".control-group").addClass("error");
},
unhighlight: function (element) {
$(element).closest(".control-group").removeClass("error");
}
});
Пока все хорошо. Сегодня я добавил клидера на сайт и потерял проверку на текстовом поле, потому что cleditor скрывает его (как и все редакторы wysiwyg). Поэтому я добавил следующий код, который исправил это.
$.validator.setDefaults({ ignore: '' });
Затем я добавил функцию, которая выполняет некоторую работу над текстовой областью до проверки. Это обязательное поле, поэтому я проверяю, содержит ли он только пробелы, не разбивая пробелы и разрывы. Если это так, я очищаю его, чтобы моя проверка прошла его правильно.
$('#myForm').submit(function() {
var contents = editor[0].$area[0].value;
var patt1 = new RegExp('^((<br>)*(\s)*( )*)*$');
if (contents.match(patt1))
editor[0].$area[0].value = '';
return true;
});
Эта функция вызывается перед тем проверки, представления формы прекращается и отображаются сообщения об ошибках, которые все хорошо. Проблема заключается в том, что установленные по умолчанию значения валидатора, которые были установлены выше, не запускаются, поэтому поля не соответствуют стилю.
Незнакомец по-прежнему состоит в том, что если я отправлю форму второй раз, будут выполняться значения по умолчанию для валидатора, и поля будут соответствующим образом оформлены.
Я могу обойти это, создав собственный атрибут проверки в MVC, но мне все же хотелось бы знать, почему это так, и если я могу это исправить.
В качестве побочного примечания регулярное выражение, которое я использую выше, чтобы найти комбинации пробелов и разрывов и т. Д., Не работает. Я поставил его в двух тестерах регулярных выражений, и он отлично работает. В моем приложении он не находит соответствия. Я новичок в регулярном выражении, поэтому, вероятно, есть намного лучший способ написать это.