MVC Twitter Bootstrap dyskretna obsługa błędów

Od pewnego czasu próbuję uzyskać dyskretną obsługę błędów MVC Jquery przy użyciu bootstrapu twitter. Doszło do tego, że albo zamierzam edytować jquery.validate, albo zrobić hack i slash na document.ready.

Aby uzyskać dyskretną obsługę błędów w Bootstrap i MVC, muszę sprawić, by klasa „error” została dołączona do klasy „control-group”. Oprócz tego do wejścia dołączana jest klasa „błąd”.

Zastanawiałem się, czy ktoś w społeczności już znalazł rozwiązanie.

Na przykład

Typowy znacznik ładowania początkowego byłby taki ...

<code><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>
</code>

Co powinno się stać, na rozmycie, gdy jquery.validate niepozorne pożary ... zmieni się na następujące

<code><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>
</code>

Aby to działało na postback / submit, możesz wykonać następujące czynności ...

<code>//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');
            }
        });
    });

});
</code>

Jednak na rozmycie nie będzie działać tak, jak można się spodziewać. Nie chcę edytować plików CSS rozruchowych lub Jquery.validate, ponieważ prawdopodobnie w pewnym momencie zostaną one uruchomione.

Czy mogę utworzyć delegata lub powiązać z funkcjami jquery i stamtąd pracować. To jest głęboki kod JS, z którym nie jestem zaznajomiony, ale z czasem mógłbym go pokonać.

Czy ktoś wie, gdzie zacznę od tego problemu, czy wiem, gdzie jest on wdrażany / omawiany?

questionAnswers(7)

yourAnswerToTheQuestion