[英]How to display and validate textbox based on radio button selected
根據單選按鈕選擇,我有這2個單選按鈕,我應該顯示文本框,還要驗證文本框。 如果我選擇單選按鈕是,文本框為null,則應該顯示錯誤。 使用下面的代碼,我只能顯示和隱藏文本框,而不能驗證文本框。 請提出解決方案。
型號:
public class CustomerModel
{
[Required(ErrorMessage = "Please select subscribe option")]
public bool Subscribe {get; set;}
public string Email {get; set;}
}
查看:
function ShowHideDiv() { var chkYes = document.getElementById("Yes"); var dvtext = document.getElementById("dvtext"); dvtext.style.display = chkYes.checked ? "block" : "none"; } $(function () { warningel = document.getElementById('lbError'); $("#radio").submit(function () { if ($('#Yes').is(':checked') && !$.trim($('#Email').val())) { warningel.innerHTML = "Please Enter Email"; return false; } }); });
<div class="form-group col-md-12 "> <label class="required" for="subscribe">Email Subsciption</label> <span >Yes : <input type="radio" value="Yes" name="Subscribe" id="chkYes" onclick="ShowHideDiv()" /></span> <span >No : <input type="radio" value="No" name="Subscribe" id="chkNo" onclick="ShowHideDiv()" /></span> @Html.ValidationMessageFor(model => model.Subscribe) </div> <div id="dvtext" style="display: none"> <label for="email" class="required">Enter Email</label> <div style="width:300px;"> @Html.TextBoxFor(model => model.Email) <div id='lbError' style="color: red;"></div> @Html.ValidationMessageFor(m => m.Email) </div> </div>
我認為一個更干凈的解決方案將只使用javascript來顯示/隱藏文本框,並讓MVC處理驗證,您可以僅通過從IValidatableObject
繼承來獲得驗證。
假設您在某處有一個isValidEmail()
自定義方法來檢查提供的字符串:
public class CustomerModel : IValidatableObject
{
public bool Subscribe {get; set;}
public string Email {get; set;}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Subscribe && !isValidEmail())
{
yield return new ValidationResult("Please enter valid email address");
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.