使字段不需要基于下拉列表选择MVC 5

Make field not required based to dropdown list selection MVC 5

本文关键字:选择 MVC 下拉列表 字段 不需要      更新时间:2023-09-26

在我的MVC 5应用程序中,我有一个下拉列表和一些需要的字段。当下拉选择改变时,我需要改变字段的这个属性。

我有这个enum

public enum OrderKind
{
    Market,
    Research,
}

,我从中填充下拉列表。我使用javascript来显示或隐藏工作字段。

 $(function () {
  $('#orderkind').change(function () {
            var value = $(this).val();
            if (value == "Market") {
                $(datefrom).hide();
                $(datefrom).hide();
                $("#fromDate").attr("required", false);
                $("#toDate").attr("required", false);
    else if (value == "Research") {
                $(datefrom).show();
                $(datefrom).show();
                $("#fromDate").attr("required", true);
                $("#toDate").attr("required", true);
                fromDate.setCustomValidity('Please Fill the date from field');
                toDate.setCustomValidity('Please Fill the date to field');
          }

,但它使日期字段总是必需的,即使它们被填充,它也会显示消息。有没有办法从控制器中检查下拉列表值?谢谢你!

我想你应该把enum改成

public enum OrderKind
{
    Market = 1,
    Research = 2,
}

然后,将值绑定到您的下拉列表中,并将add external (default)值绑定到它。

给你的表单一个id

using (Html.BeginForm(null, null, FormMethod.Post, new { id = "formID" }))
   { }
在Jquery

$("#formID").submit(function(e){
//your checking
//you can prevent form submission here like
e.preventdefault()
//and you can show validation error for dropdown list or show as alert
});

你可以在Jquery中像这样设置验证错误

试试这段代码,希望对你有所帮助

$(function () {

$('#orderkind').change(function () { var value = $(this).val(); if (value == "Market") { $(datefrom).hide(); $(datefrom).hide(); $("#fromDate").removeAttr('required'); $("#toDate").removeAttr('required'); else if (value == "Research") { $(datefrom).show(); $(datefrom).show(); $("#fromDate").attr('required', 'required'); $("#toDate").attr('required', 'required'); fromDate.setCustomValidity('Please Fill the date from field'); toDate.setCustomValidity('Please Fill the date to field'); } });