我有一个MVC应用程序。我需要根据模型值切换输入验证。 选中“是”复选框时,必须使用我自己的验证消息来填写“电子邮件”字段,否则不需要。
输入:
<input type="checkbox"
name="@Html.NameFor(a=> a.CreatePersonAsUser)"
id="@Html.IdFor(a=> a.CreatePersonAsUser)"
value="@Html.ValueFor(a=>a.CreatePersonAsUser)"
onchange="createUserRightChange(this)" />
<script type="text/javascript">
function createUserRightChange(cbx) {
var isChecked = $(cbx).is(':checked');
var emailElement = $('#@Html.IdFor(a => a.Email)');
if (isChecked) {
emailElement.attr('required', 'required');
emailElement.on('oninput', $(emailElement)[0].setCustomValidity(''));
emailElement.on('oninvalid', $(emailElement)[0].setCustomValidity('My validation message'));
} else {
emailElement.removeAttr('required');
emailElement.off('oninput');
emailElement.off('oninvalid');
}
}
$(document).ready(function () {
createUserRightChange($('#@Html.IdFor(a => a.CreatePersonAsUser)'));
});
</script>
开头是未选中复选框。当我选中复选框时,字段验证效果很好。当我改变主意并取消选中复选框时,验证仍然有效。
我不知道如何更改验证。
我当然要在服务器站点上验证模型,但我想在客户端站点上进行正确的验证。
是否可以通过Javascript或JQuery关闭客户端验证?
感谢您的建议和帮助。