禁用JavaScript所需的验证

Tob*_*ias 9 javascript validation unobtrusive-javascript asp.net-mvc-3

我有一个创建表单来创建一个对象.如果选中了复选框并且标记为必需(通过模型中的属性),则创建模型具有一些仅可见的属性(.hide,.show()).

不幸的是,如果未选中该复选框,则会对隐藏的属性执行所需的验证.

如何禁用此属性所需的验证?

我尝试将input元素的data-val属性设置为false,但这不起作用.

有点想法吗?

在此先感谢Tobias

更新:

这是java脚本代码.data-val属性设置为false.似乎验证不关心这个属性.还有data-val-required属性,但有一个我无法备份的文本.

$(function () {
                $("#MyCheckbox")
                    .change(function () {
                        if (this.checked) {
                            $("#divWithChildProperties [data-val]").attr("data-val", true);
                            $("#divWithChildProperties ").show();
                        }
                        else {
                            $("#divWithChildProperties [data-val]").attr("data-val", false);
                            $("#divWithChildProperties ").hide();
                        }
                    })
            });
Run Code Online (Sandbox Code Playgroud)

bba*_*bak 22

我用自定义验证属性处理了这样的情况.除了使用属性的Required属性之外,您可以创建RequiredIf属性,并且仅当另一个属性是特定值时才需要使用某些属性.

这是一篇关于创建这样的属性的帖子(在"更复杂的自定义验证器"部分的页面中间的示例):http://www.devtrends.co.uk/blog/the-complete-guide -to验证功能于asp.net-MVC -3-部分-2-

如果您的复选框代表模型中的属性,这应该可以正常工作.

如果您不想使用新的验证属性来处理此问题,则除了将data-val属性更改为false之外,您还需要做更多的事情.当jQuery验证首先解析您的表单时,它会将值存储在表单的数据中.所以简单地改变data-val是不够的.您还必须删除存储的验证数据并重新分析表单.这是一个例子:

// Do this after you've removed/modified the data-val attribute
$('selector for your form').removeData('unobtrusiveValidation');
$('selector for your form').removeData('validator');
$.validator.unobtrusive.parse('selector for your form');
Run Code Online (Sandbox Code Playgroud)


Kar*_*n P 6

您可以使用以下JQuery删除元素的所有验证规则

$('#ElementId').rules('remove');
Run Code Online (Sandbox Code Playgroud)

你也可以使用类名,

$('.ElementClassName').rules('remove');
Run Code Online (Sandbox Code Playgroud)

如果要删除特定规则,请执行此操作

$('#ElementId').rules('remove', 'required');
Run Code Online (Sandbox Code Playgroud)