javascript - 禁用 JavaScript 所需的验证

标签 javascript asp.net-mvc-3 validation unobtrusive-javascript

我有一个创建对象的创建表单。 创建模型有一些属性只有在选中复选框并标记为必需(通过模型中的属性)时才可见(.hide、.show())。

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

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

我尝试将输入元素的 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 验证首先解析您的表单时,它会将值存储在表单的数据中。所以仅仅改变 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');

关于javascript - 禁用 JavaScript 所需的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7389652/

相关文章:

java - JSP 验证和重定向 : how to validate form input and forward the errors back to the original page?

entity-framework - 单元测试 Entity Framework 验证

javascript - 错误 : Looks like you have nested a 'NavigationContainer' inside another. 通常你只需要一个容器在应用程序的根目录

javascript - parseFloat 为 -2.00 返回 0-2.00

javascript - 如何将变量值从 javascript 传递到 perl

c# - TextBoxFor 中的 MVC3 格式可为 nullable DateTime,无需更改模型

javascript - 单击侧边栏中的js后如何保持导航菜单突出显示

javascript - 将参数从 jsonresult 传递到 actionresult

asp.net-mvc-3 - 是否可以将太多存储库注入(inject) Controller ?

c# - 我应该在 DDD 域项目中验证吗?