Псевдокласс: empty and: not (: empty) - заставляет его скрывать () и показывать () относительно содержимого (jquery, mvc 5, asp.net, css)

0

У меня проблема с: empty и: not (: empty) (jquery, mvc 5, asp.net, css). Моя цель - сделать сообщение об ошибке видимым только в том случае, если есть текст, например "Поле" Улица "". и в противном случае это исчезнет. Он работает только частично.

На стороне сервера это выглядит так:

<div class="BWForm_form-group">
    <div class="col-md-4 BWTextLeft">
        @Html.BWLabelFor(model => model.street, new { @class = "BWLabel" })
        <b>/</b>
        @Html.BWLabelFor(model => model.streetNo, new { @class = "BWLabel" })
    </div>
    <div class="col-md-8">
        <div class="col-md-9 BWPaddingRight">
            @Html.EditorFor(model => model.street, new { @class = "BWForm_form-control BWTextBox" })
        </div>
        <div class="col-md-3 BWPaddingLeft">
            @Html.EditorFor(model => model.streetNo, new { @class = "BWForm_form-control BWTextBox" })
        </div>
    </div>
    <div class="clearfix"></div>
    <div class="col-md-offset-4 col-md-8">

            @Html.ValidationMessageFor(model => model.street)
            @Html.ValidationMessageFor(model => model.streetNo)

    </div>
</div>

Для моей проблемы важна только "@Html.ValidationMessageFor(model => model.street)", которая заставит исходный HTML выглядеть (только соответствующий код):

<span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="receiverAddress.street"></span>

Если произошла ошибка (при отправке формы и обнаружении ошибок) будет показан следующий HTML (предыдущий ("оригинальный HTML") html будет полностью заменен):

<span class="field-validation-error" data-valmsg-replace="true" data-valmsg-for="receiverAddress.street">
<span class="" for="receiverAddress_street">The Street field is required.</span>
</span

Моя идея состояла в том, чтобы сделать это, как (это работает):

 $('span.field-validation-error:empty').hide();
 $('span.field-validation-valid:empty').hide();

Но я хочу снова отобразить его (это не работает):

$('span.field-validation-error:not(:empty)').show(100);
$('span.field-validation-valid:not(:empty)').show(100);

Html выглядит по-прежнему (style = "display: none;" он по-прежнему отключен):

<span class="field-validation-error" data-valmsg-replace="true" data-valmsg-for="receiverAddress.street" style="display: none;">

    <span class="" for="receiverAddress_street">

        The Street field is required.

    </span>

</span>

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

Ты поможешь. Мартин

(обновлено: добавлена дополнительная информация)

  • 0
    Не могли бы вы предоставить JSFiddle?
Теги:
asp.net-mvc-5
show
hide

1 ответ

0
Лучший ответ

Попробуйте это (шаблон)

обновленный

$(function () {
  $("span[class^=field-validation]")
  .each(function (i, el) {
    if ( $(el).text().length > 1 ) {
      $(el).css("display", "block")
    };
  });
});

jsfiddle http://jsfiddle.net/guest271314/tF2YJ/

  • 0
    обновил мой пост, может это поможет :)
  • 1
    Смотрите обновленный пост. Спасибо
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню