Javascript Asp.net-MVC中特定隐藏字段的客户端验证
我使用数据注释进行验证,也使用unobtrusive.js进行客户端验证 根据jquery.validate.js的默认设置(忽略:“:hidden”),我有几个默认未验证的隐藏字段(我不需要) 在我的例子中,我只想验证一个特定的隐藏字段,而不是我无法覆盖的所有字段Javascript Asp.net-MVC中特定隐藏字段的客户端验证,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我使用数据注释进行验证,也使用unobtrusive.js进行客户端验证 根据jquery.validate.js的默认设置(忽略:“:hidden”),我有几个默认未验证的隐藏字段(我不需要) 在我的例子中,我只想验证一个特定的隐藏字段,而不是我无法覆盖的所有字段 ***ignore: ":hidden"*** to ***ignore:[]***. 如果它被更改,那么所有隐藏字段都将被考虑进行验证,这不是我的要求 不知道如何为特定隐藏字段启用验证
***ignore: ":hidden"*** to ***ignore:[]***.
如果它被更改,那么所有隐藏字段都将被考虑进行验证,这不是我的要求
不知道如何为特定隐藏字段启用验证
[ValidDate(ErrorMessage = "This is not a valid date.Please enter date in dd/mm/yyyy format.")]
public string HiddenSelectedDob { get; set; }
其中,ValidDate
是一个自定义属性
在这里,我从三个不同的下拉列表中获取用户对日期、月份和年份的输入,对于每个下拉列表的更改事件,hiddenselectedob
的值将使用jQuery设置
最后,提交时,应验证此隐藏文件
我给那个隐藏的文件起了一个类名,比如
@Html.HiddenFor(m => m.HiddenSelectedDob, new { @class = "validateAlways" })
并覆盖jquery.validate.js的默认设置,如
$.validator.setDefaults({ ignore: ":hidden:not(.validateAlways)" });
但结果是一样的。字段未验证。我看到的唯一方法是向要验证的隐藏输入添加一个类 因此,您必须在视图级别执行此操作
@Html.HiddenFor(x => x.HiddenSelectedDob, new{@class="validateAlways"})
然后,将validate.js的忽略规则更改为
ignore: ':hidden:not('.validateAlways')'
这意味着:忽略所有隐藏的输入,除非它们有一个
validateAlways
类。好吧,我看到的唯一方法是向要验证的隐藏输入添加一个类
因此,您必须在视图级别执行此操作
@Html.HiddenFor(x => x.HiddenSelectedDob, new{@class="validateAlways"})
然后,将validate.js的忽略规则更改为
ignore: ':hidden:not('.validateAlways')'
这意味着:忽略所有隐藏的输入,除非它们有一个
validateAlways
类。如果您正确验证了组成部分的字段,那么隐藏的dob是否不总是有效?实际上,需要对组合进行验证,如2016年2月31日不是有效日期,但单个字段如31,02和2016是有效的。您应该加强加载下拉列表的方式,绝不允许在下拉列表中出现无效条目,这就是下拉列表的要点。如果您正确验证了组成零件的字段,那么隐藏的dob是否始终有效?实际上,需要对组合进行验证,如2016年2月31日不是有效日期,但单独的字段如31、02和2016是有效的。您应该收紧加载下拉列表的方式,你不应该允许在下拉列表中出现无效条目,这就是下拉列表的要点。谢谢!!但它不起作用。重写类似于“$.validator.setDefaults({ignore:::hidden:not(.validateAlways)}”);”需要引用类名-$.validator.setDefaults({ignore:':hidden:not('.validateAlways'))})代码>(然后它就可以正常工作了)。您还可以使用id
-':hidden:not(“#hiddenselectedob”)'谢谢!!但它不起作用。重写类似于“$.validator.setDefaults({ignore:::hidden:not(.validateAlways)}”);”需要引用类名-$.validator.setDefaults({ignore:':hidden:not('.validateAlways'))})代码>(然后它就可以正常工作了)。您还可以使用id
-':hidden:not(“#hiddenselectedob”)`