在新版本的jQuery验证插件1.9中默认验证隐藏字段被忽略.我正在使用CKEditor进行textarea输入字段,它隐藏了字段并将其替换为iframe.该字段在那里,但是对隐藏字段禁用了验证.使用验证插件版本1.8.1,一切都按预期工作.
所以我的问题是如何使用v1.9验证插件启用隐藏字段的验证.
此设置不起作用:
$.validator.setDefaults({ ignore: '' });
Run Code Online (Sandbox Code Playgroud) 我已经为我的表单设置了模型验证,但验证似乎根本不起作用.我不认为任何人可以提供帮助.我已经尝试过使用下面的解决方法,但这会在firebug中不断提出"未定义"错误.
示例解决脚本:
<script type="text/javascript">
$(document).ready(function () {
$.validator.setDefaults({ ignore: [] });
});
</script>
Run Code Online (Sandbox Code Playgroud)
示例文本字段(注意:名称为customer的自动填充文本字段):
@Html.TextBox("txtCustomer", null, new { @id = "txtCustomer", @class = "txt" })
Run Code Online (Sandbox Code Playgroud)
示例隐藏字段(注意:当从自动完成字段中进行选择时,将id注入隐藏字段):
@Html.HiddenFor(model => model.Customer_ID, new { @id = "hCustomerID" })
Run Code Online (Sandbox Code Playgroud)
示例模型数据注释
[Range(1, Int32.MaxValue, ErrorMessage = "Please select a customer")]
public int Customer_ID { get; set; }
Run Code Online (Sandbox Code Playgroud)
编辑:错误的屏幕截图
对不起,我必须发布截图的链接,因为我的代表点足够高.
编辑:显示页面源的屏幕截图
我正在使用数据注释进行验证,并使用unobtrusive.js进行客户端验证.
根据jquery.validate.js的默认设置(忽略:":hidden"),默认情况下,我有几个未经验证(我不需要)的隐藏字段.
在我的情况下,我只想验证一个特定的隐藏字段而不是全部因为我无法覆盖
***ignore: ":hidden"*** to ***ignore:[]***.
Run Code Online (Sandbox Code Playgroud)
如果它被更改,那么将考虑所有隐藏字段进行验证,这不是我的要求.
不知道如何为特定的隐藏字段启用验证.
[ValidDate(ErrorMessage = "This is not a valid date.Please enter date in dd/mm/yyyy format.")]
public string HiddenSelectedDob { get; set; }
Run Code Online (Sandbox Code Playgroud)
ValidDate自定义属性在哪里.
在这里,我从三个不同的下拉列表中获取用户对日,月和年的输入,并且对于每个下拉列表的更改事件,HiddenSelectedDob将使用jQuery设置值.
最后提交这个隐藏的文件应该是验证.
我已经为那个隐藏的文件提供了一个类名...
@Html.HiddenFor(m => m.HiddenSelectedDob, new { @class = "validateAlways" })
Run Code Online (Sandbox Code Playgroud)
并覆盖jquery.validate.js的默认设置
$.validator.setDefaults({ ignore: ":hidden:not(.validateAlways)" });
Run Code Online (Sandbox Code Playgroud)
但结果是一样的.该字段未验证.