Scenario: Drop-down for customer to select preferred language. If they choose anything other than English, the Radio Group 'Interpreter Required?' (Yes / No) would be a required field. If they select English, this Radio Group is NOT required.
I have the 'Required' Data Annotations set in my model:
[Required] public int? LanguageID { get; set; } [Required] public int? InterpreterRequiredID { get; set; }
View:
<div class="form-group">
<label>What is your preferred language?</label><br />
@Html.Kendo().ComboBoxFor(m => m.LanguageID).BindTo(new List<SelectListItem>()
{
new SelectListItem() { Text="English", Value="E" },
new SelectListItem() { Text="Spanish", Value="S" },
new SelectListItem() { Text="Other", Value="O" }
}).Events(e => e
.Change("LanguageID_onChange")
)
</div>
<div class="form-group">
<label>Do you require an interpreter?</label><br />
@Html.Kendo().RadioGroupFor(m => m.InterpreterRequiredID).Items(i =>
{
i.Add().Label("Yes").Value("1");
i.Add().Label("No").Value("2");
})
</div>
<script>
function LanguageID_onChange(e) {
var el = document.getElementById('InterpreterRequiredID');
if (this.value() == 'E') {
el.removeAttribute("data-val-required");
} else {
el.setAttribute("data-val-required", "This is required!");
}
}
</script>