微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

禁用JavaScript所需的验证

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

不幸的是,当复选框未被选中时,对隐藏的属性执行所需的验证.

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

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

一个想法?

提前致谢
托比亚斯

更新:

这是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();
                        }
                    })
            });

解决方法

我已经使用自定义验证属性处理了这种情况.而不是对属性使用required属性,您可以创建一个requiredIf属性,并且只有在另一个属性为特定值时才需要某些属性.

这是一个关于创建这样一个属性一个帖子(在“一个更复杂的自定义验证器”部分的页面间的例子):http://www.devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net-mvc-3-part-2

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

如果您不想使用新的验证属性来处理这个问题,您将不得不做更多的事情,而不仅仅是将data-val属性更改为false.当jQuery验证首先解析表单时,它会将值存储在表单的数据中.所以简单地改变数据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');

原文地址:https://www.jb51.cc/js/152551.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐