Показывать / скрывать поле в зависимости от выпадающего списка для HTML razor

#javascript #jquery #html #asp.net-mvc #razor

#javascript #jquery #HTML #asp.net-mvc #razor

Вопрос:

У меня есть поле DropDownListFor, в котором вы выберете название страны:

         <div class="form-group">
        @Html.LabelFor(model => model.CountryCode, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownListFor(model => model.CountryCode, null, new { @class = "form-control" })
            @Html.ValidationMessageFor(model => model.CountryCode, "", new { @class = "label label-danger" })
        </div>
    </div>
  

в представлении будет отображаться поле губернаторства, если пользователь выберет Египет — НАПРИМЕР, код страны —
Итак, мой Script.js:

     $("input[name='Address.CountryCode']").change(function () {

    if ($(this).val() == "true") {
        $("#EgyptianCitizen").slideDown();
    }
    else {
        $("#EgyptianCitizen").slideUp();
    }
});
  

И поле HTML для губернаторства:

     <div class="form-group" id="EgyptianCitizen" style='@((Model != null amp;amp; Model.CountryCode=="EG") ? "display: block;" : "display: none;")'>
    @Html.Label("GovernorateID", "Governorate", htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownListFor(model => model.GovernorateID, null, new { @class = "form-control" })
        @Html.ValidationMessageFor(model => model.GovernorateID, "", new { @class = "label label-danger" })
    </div>
</div>
  

Но все еще не работает…

Комментарии:

1. У вас нет элемента с name="Address.CountryCode" — у вашего первого выпадающего списка есть name="CountryCode" — и вы можете просто использовать ('#CountryCode').change(function() {... } (но вы действительно отображаете опцию country с помощью a value=true ?)

2. Адрес. Код страны о модели.item

3. значение должно быть value=»EG», верно?

4. Извините, не понимаю вашего последнего комментария — это an EditorTemplate ? И да, если у вас есть <option value="EG">Egypt</option> , тогда это должно быть if ($(this).val() == "EG") {

5. CounrtyCode получает значение из базы данных, и оно будет выглядеть так, как вы написали в представлении html… но не работает

Ответ №1:

Просто проверьте код страны в html браузера… и измените ввод на Select, а значение true на выбранное значение

 $("Select[name='CurrentAddress.CountryCode']").change(function () {

    if ($(this).val() == "EG") {
        $("#EgyptianCitizen").slideDown();
    }
    else {
        $("#EgyptianCitizen").slideUp();
    }
});