2012-06-27 3 views
1

У меня есть приложение, построенное на 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)*(&nbsp;)*)*$'); 
    if (contents.match(patt1)) 
     editor[0].$area[0].value = ''; 
    return true; 
}); 

Эта функция вызывается перед тем проверки, представления формы прекращается и отображаются сообщения об ошибках, которые все хорошо. Проблема заключается в том, что установленные по умолчанию значения валидатора, которые были установлены выше, не запускаются, поэтому поля не соответствуют стилю.

Незнакомец по-прежнему состоит в том, что если я отправлю форму второй раз, будут выполняться значения по умолчанию для валидатора, и поля будут соответствующим образом оформлены.

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

В качестве побочного примечания регулярное выражение, которое я использую выше, чтобы найти комбинации пробелов и разрывов и т. Д., Не работает. Я поставил его в двух тестерах регулярных выражений, и он отлично работает. В моем приложении он не находит соответствия. Я новичок в регулярном выражении, поэтому, вероятно, есть намного лучший способ написать это.

ответ

0

Попробуйте добавить ignore: '', в строке непосредственно над правилами :. Пустая строка выполнила эту работу для меня.