jquery, bootstrap, проверка и wysiwyg

У меня есть приложение, построенное на asp.net MVC и использующее начальную загрузку Twitters. Чтобы заставить стили начальной загрузки работать, я добавил:

$.validator.setDefaults({
    highlight: function (element) {
        $(element).closest(".control-group").addClass("error");
    },
    unhighlight: function (element) {
        $(element).closest(".control-group").removeClass("error");
    }
});

Все идет нормально. Сегодня я добавил cleditor на сайт и потерял проверку текстовой области, потому что 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, но мне все же хотелось бы знать, почему это ведет себя таким образом, и могу ли я это исправить.

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


person Matthew    schedule 27.06.2012    source источник


Ответы (1)


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

person Kevin Rotkiske    schedule 29.08.2013