通过某个表单生成器,在页面上呈现元素列表,并且它们都具有对它们的验证。当我查看HTML源代码时,我看到类似这样的内容:
<input type="text" id="email" name="email" data-val-required="No valid email address!" data-val="true">
我需要以某种方式动态启用/禁用此类元素的验证。我尝试启用/禁用data-val
属性,方法是将其设置为false
,然后再返回true
。但它似乎没有回应。验证总是存在!
任何人都知道如何以动态方式启用/禁用某些字段的验证?
答案 0 :(得分:43)
我实际上找到了一个更符合我需求的解决方案。我可以做到以下几点:
$(function() {
var settngs = $.data($('form')[0], 'validator').settings;
settngs.ignore = ".ignore";
});
我可以通过在元素中添加或删除类名ignore
来“切换”我想要的任何元素。
答案 1 :(得分:14)
我认为这会有所帮助。
<div class="editor-field">
@{ Html.EnableClientValidation(false); }
@Html.TextBoxFor(m => m.BatchId, new { @class = "k-textbox" })
@{ Html.EnableClientValidation(true); }
</div>
答案 2 :(得分:1)
我认为您需要编写自定义验证属性,然后在JQuery中自己处理数据。
请参阅此文章:http://www.devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net-mvc-3-part-2
答案 3 :(得分:0)
这对我来说更好:
$('#Reference').rules('add', 'required');
$('#Reference').rules('add', 'remove');
$('#Reference').rules('add', { minlength: 2 });
答案 4 :(得分:0)
我会在不覆盖不显眼的验证器默认值的情况下再添加一个选项。由于特定元素的验证由 data-val
属性控制,您可以将其设置为 data-val="false"
。
因此对于 Razor 助手,请使用:
@Html.TextBoxFor(model => Model.DateOfBirth, new { @class = "form-control", data_val = false })
对于新的 .net 核心语法,请使用:
<input asp-for="DateOfBirth" class="form-control" data-val="false">