Html.ValidationSummary не показывается при вводе правильных данных - PullRequest
0 голосов
/ 16 ноября 2011

Я работаю над проектом, который использует ASPNET MVC 3, ненавязчивый javascript и Razor

У меня есть частичное представление с Ajax.BeginForm, содержащее такие поля:

@Html.TextBoxFor(model => model.FirstName, new { @class = "txt-input", placeholder = "Eg. First Name", maxlength = 50 })
@Html.ValidationMessageFor(model => model.FirstName, "*", new { @class = "form-comments redtxt" })

Тогда в конце формы у меня есть это:

@Html.ValidationSummary(false, "Please complete the required fields", new { @class = "form-comments redtxt" })

Когда я не ввожу никакого значения, оно правильно показывает "*" рядом с текстовым полем и «Пожалуйста, заполните необходимые поля» в сводке проверки. Проблема в том, что когда я ввожу правильное значение, только "*" пропадает и остается «Пожалуйста, заполните необходимые поля».

Мне нужно добавить это в CSS, чтобы не показывать "*" или «Пожалуйста, заполните обязательные поля» при первой загрузке внутреннего вида.

.validation-summary-valid
{
    display: none;
}

.field-validation-valid 
{
    display: none;
}

Как я могу сделать так, чтобы сводка по валидации исчезла при вводе правильных данных?

Заранее спасибо! Гильермо.

Ответы [ 2 ]

0 голосов
/ 17 ноября 2011

Насколько я понял вашу проблему, вы можете использовать ниже написанный код. Это просто взломать.

<script>
    jQuery(function () {
        jQuery('form')
        .find('input')
        .bind('keyup', function () {
            var _summary = jQuery('.form-comments');
            if ($(this).valid()) {
                _summary.hide();
            }
            else {
                _summary.show();
            }
        })
    });
</script>
0 голосов
/ 16 ноября 2011

Почему он все еще отображается, я не знаю.

Но быстрое решение состоит в том, чтобы поместить блок if вокруг вашего @Html.ValidationSummary и проверить, действительна ли модель

@ if(!ViewContext.ViewData.ModelState.IsValid){

@Html.ValidationSummary(false, "Please complete the required fields", new { @class = "form-comments redtxt" })

}

Я обычно помещаю свою сводку проверки в диалог, и я просто не отображаю div диалогового окна, если Page.IsValid имеет значение true

- Обновление здесь - это фрагмент кода, который, я знаю, работает

    @{ if(!ViewContext.ViewData.ModelState.IsValid){
<div id="errors" class="DisplayErrors">
 @Html.ValidationSummary()
</div>
}}
<script type="text/javascript">
    $(function () {
        $(".Date").datepicker();
        $(".button").button();
        $(".DisplayErrors").dialog({ autoOpen: true, title:"Errors" });
    });
</script>
...