Как отключить необходимое сообщение для выпадающего списка? - PullRequest
0 голосов
/ 25 марта 2019

У меня в форме есть две радиокнопки. Один связан с раскрывающимся списком, а другой связан с текстовым полем. Если пользователь выбирает вторую радиокнопку (текстовое поле), я хотел бы отключить необходимое сообщение для раскрывающегося списка, потому что, когда пользователь нажимает кнопку «Отправить», в раскрывающемся списке отображается сообщение «Пожалуйста, выберите пункт в списке. "

Кстати, у меня это работает правильно, если я просто отключил раскрывающийся список, когда выбрана вторая радиокнопка, но мне было интересно, есть ли другой способ (может быть, лучше), потому что когда вы отключаете раскрывающийся список, он меняет его серый.

Скриншоты:

enter image description here enter image description here

Модель:

public class EnrollmentModel : Controller
{
  ...
  public bool PriceOption { get; set; }

  [RequiredIf("PriceOption == true")]
  public string SelectedRatePlan { get; set; }

  public IEnumerable<SelectListItem> RatePlans { get; set; }

  [RequiredIf("PriceOption == false")]
  public string CustomRate { get; set; }
  ...
}

Вид:

@using (Html.BeginForm())
{
  @Html.AntiForgeryToken()

  <fieldset>
    <div class="form-group">
      <div class="row">
        @Html.Label("Price Option:")
      </div>
    </div>
    <div class="form-group">
      <div class="row">
        @Html.RadioButtonFor(x => Model.PriceOption, true, htmlAttributes: new { @id = "comed", @class = "col-md-1" })
        @Html.Label("Use price from current rate plan")
        &nbsp;
        &nbsp;
        &nbsp;
        @Html.DropDownListFor(x => Model.SelectedRatePlan, new SelectList(Model.RatePlans, "Value", "Text"), htmlAttributes: new { @class = "form-control", id = "rateplans", style = "width:100px;", required = "Select Rate Plan" })
        @Html.ValidationMessageFor(x => Model.SelectedRatePlan, "", new { @class = "text-danger" })

      </div>
    </div>
    <div class="form-group">
      <div class="row">
        @Html.RadioButtonFor(x => Model.PriceOption, false, htmlAttributes: new { @id = "custom", @class = "col-md-1" })
        @Html.Label("Enter custom price")
        &nbsp;
        &nbsp;
        &nbsp;
        @Html.TextBoxFor(x => Model.CustomRate, htmlAttributes: new { @id = "customrate", @class = "form-control", style = "width:100px;" })
        @Html.ValidationMessageFor(x => Model.CustomRate, "", new { @class = "text-danger" })
      </div>
    </div>
    <div class="form-group">
      <div class="row">
        <div class="col-md-8">
          <input type="button" value="Cancel" class="btn btn-link" onclick="location.href = '@Url.Action("Index", "Home")';" />
          &nbsp;
          <button type="submit" value="Save" class="btn btn-primary">Submit</button>
        </div>
      </div>
    </div>
  </fieldset>
}

1 Ответ

1 голос
/ 25 марта 2019

Вы должны указать, что поле является необязательным в вашей модели, потому что bool не может быть нулевым. добавлять "?" после "bool" или используйте "Nullable" вместо "bool"

 public bool? PriceOption { get; set; }

Этот знак вопроса означает, что это свойство может быть нулевым.

На этой странице вы можете найти, как реализовать событие изменения с помощью переключателя: https://devdojo.com/tutorials/how-to-detect-radio-box-change-with-jquery

, и вы можете удалить атрибут, используя следующие коды:

$("#selectElementId").removeAttr("required");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...