在 MVC 5 中,如何根据另一个下拉值删除所需的属性?
In MVC 5, How do I remove the required attribute depending on another dropdown value?
目前,在您提交带有
Usage_Status 下拉选择值 a 为“2”,然后切换到任何其他值并再次提交。 javascript 验证消息 'The Assigned User field is required.' 出现并且在下拉列表中切换值并再次提交后不会消失。是否可以删除所需的属性,或者在选择“2”的条件下设置它?
HTML:
<div class="row">
<div class="form-group col-sm-4">
@Html.LabelFor(model => model.Usage_Status, new { @class = "control-label col-md-12" })
<div class="col-md-10">
@Html.DropDownList("Usage_Status", new SelectList(statuses, "ID", "Name"), new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Usage_Status)
</div>
</div>
<div class="form-group col-sm-4">
@Html.LabelFor(model => model.Assigned_User, new { @class = "control-label col-md-12" })
<div class="col-md-10">
@Html.EditorFor(model => model.Assigned_User, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Assigned_User)
</div>
</div>
<div class="form-group col-sm-4">
@Html.LabelFor(model => model.Department, new { @class = "control-label col-md-12" })
<div class="col-md-10">
@Html.DropDownList("Department", new SelectList(departments, "ID", "Name"), string.Empty, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Department)
</div>
</div>
</div>
JavaScript:
$(document).ready(function () {
$('#Usage_Status').change(function (e) {
//If item is being used, require a user and department. Otherwise, disabled those fields.
if ($('#Usage_Status').val() == "2") {
$('#Assigned_User').rules('add', 'required');
$('#Assigned_User').removeAttr('disabled');
} else {
$('#Assigned_User').rules('remove', 'required');
$('#Assigned_User').removeAttr('required');
$('#Assigned_User').attr('disabled', 'disabled');
}
});
如果您正在进行条件验证,例如您表单中的一个字段的值定义了对另一个字段的验证,您需要一个额外的库。我用 expressive annotations
目前,在您提交带有 Usage_Status 下拉选择值 a 为“2”,然后切换到任何其他值并再次提交。 javascript 验证消息 'The Assigned User field is required.' 出现并且在下拉列表中切换值并再次提交后不会消失。是否可以删除所需的属性,或者在选择“2”的条件下设置它?
HTML:
<div class="row">
<div class="form-group col-sm-4">
@Html.LabelFor(model => model.Usage_Status, new { @class = "control-label col-md-12" })
<div class="col-md-10">
@Html.DropDownList("Usage_Status", new SelectList(statuses, "ID", "Name"), new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Usage_Status)
</div>
</div>
<div class="form-group col-sm-4">
@Html.LabelFor(model => model.Assigned_User, new { @class = "control-label col-md-12" })
<div class="col-md-10">
@Html.EditorFor(model => model.Assigned_User, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Assigned_User)
</div>
</div>
<div class="form-group col-sm-4">
@Html.LabelFor(model => model.Department, new { @class = "control-label col-md-12" })
<div class="col-md-10">
@Html.DropDownList("Department", new SelectList(departments, "ID", "Name"), string.Empty, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Department)
</div>
</div>
</div>
JavaScript:
$(document).ready(function () {
$('#Usage_Status').change(function (e) {
//If item is being used, require a user and department. Otherwise, disabled those fields.
if ($('#Usage_Status').val() == "2") {
$('#Assigned_User').rules('add', 'required');
$('#Assigned_User').removeAttr('disabled');
} else {
$('#Assigned_User').rules('remove', 'required');
$('#Assigned_User').removeAttr('required');
$('#Assigned_User').attr('disabled', 'disabled');
}
});
如果您正在进行条件验证,例如您表单中的一个字段的值定义了对另一个字段的验证,您需要一个额外的库。我用 expressive annotations