Я пытаюсь получить ненавязчивую обработку ошибок MVC Jquery, работающую с twitter bootstrap в течение некоторого времени. Его дошло до того, что я либо собираюсь отредактировать jquery.validate, либо сделать взломать и слэш на document.ready.
Чтобы получить ненавязчивую обработку ошибок для работы с Bootstrap и MVC, мне нужно сделать так, чтобы класс "error" был добавлен в класс "control-group". Кроме того, класс "ошибка" добавляется к вводу.
Мне было интересно, нашел ли кто-нибудь в сообществе решение.
Например
Типичная разметка бутстрапа будет выглядеть так...
<div class="control-group">
<label for="Username">Username</label>
<div class="controls">
<input data-val="true" data-val-required="Username is required" id="Username" name="Username" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Username" data-valmsg-replace="true"></span>
</div>
</div>
Что должно произойти, при размывании, когда jquery.validate ненавязчивые пожары... он изменится на следующие
<div class="control-group error">
<label for="Username">Username</label>
<div class="controls">
<input data-val="true" data-val-required="Username is required" id="Username" name="Username" type="text" value="" />
<span class="field-validation-valid help-inline" data-valmsg-for="Username" data-valmsg-replace="true"></span>
</div>
</div>
Чтобы заставить это работать на postback/submit, вы можете сделать следующее...
//twitter bootstrap on post
$(function () {
$('span.field-validation-valid, span.field-validation-error').each(function () {
$(this).addClass('help-inline');
});
$('form').submit(function () {
if ($(this).valid()) {
$(this).find('div.control-group').each(function () {
if ($(this).find('span.field-validation-error').length == 0) {
$(this).removeClass('error');
}
});
}
else {
$(this).find('div.control-group').each(function () {
if ($(this).find('span.field-validation-error').length > 0) {
$(this).addClass('error');
}
});
}
});
$('form').each(function () {
$(this).find('div.control-group').each(function () {
if ($(this).find('span.field-validation-error').length > 0) {
$(this).addClass('error');
}
});
});
});
Однако при размытии он не будет работать так, как вы ожидали. Я не хочу редактировать файлы bootstrap CSS или Jquery.validate, поскольку они, скорее всего, выведут обновление в какой-то момент.
Будет ли я создавать делегат или связывать функции jquery и работать оттуда. Это глубокий JS-код, с которым я не знаком, но мог со временем перегонять мой путь через него.
Кто-нибудь знает, с чего я начну с этой проблемы, или знаю, где она была реализована/обсуждалась?