Jquery 设置忽略步骤属性的不引人注目的验证规则

Jquery 设置忽略步骤属性的不引人注目的验证规则,jquery,jquery-validate,unobtrusive-validation,Jquery,Jquery Validate,Unobtrusive Validation,我有一个表单,要求用户选择出生日期。作为我正在使用的日期选择器,它在移动设备上创建了使用本机移动日期选择器的新输入字段。创建的元素如下所示: <input type="date" step="any" min="..." max="..."> 但是步骤属性被完全从输入中删除,这是不好的。这个错误更多地与不引人注目的验证有关,而不是FlatPicker。我发现的另一个解决方案(我认为更好)添加了新的验证规则: $("#testingform").validate({ rule

我有一个表单,要求用户选择出生日期。作为我正在使用的日期选择器,它在移动设备上创建了使用本机移动日期选择器的新输入字段。创建的元素如下所示:

<input type="date" step="any" min="..." max="...">
但是步骤属性被完全从输入中删除,这是不好的。这个错误更多地与不引人注目的验证有关,而不是FlatPicker。我发现的另一个解决方案(我认为更好)添加了新的验证规则:

$("#testingform").validate({
    rules: {
        date1: {step: false}
    }
});
我知道这个验证是针对原生JQuery验证的,但为了简单起见,我提出了这个。(您可以通过
$(“form”).validate().settings
访问不引人注目的验证规则),但是此解决方案仅对具有
name=“date1”
的特定字段有效。是否有可能设置不引人注目的验证规则,比如“忽略所有步骤属性”

编辑: 我尝试了@Sparky提出的解决方案,但它不起作用。我试图为不同的输入使用规则,但我无法删除任何规则。似乎在使用不引人注目的包装时,
.rules(“remove”,…)
不起作用。实际上,我可以通过以下代码删除规则:delete jq(“form”).validate().settings.rules[“NameOfInput”]。步骤。但是这不适用于我的情况,因为flatpickr在初始化后创建了没有名称的新输入,所以我无法通过
jq(“form”).validate().settings.rules访问它

尽管此插件会根据任何内联属性自动设置验证规则,但您也可以使用
.rules>动态删除任何规则('remove')
方法

动态地从匹配的元素
name=“date1”
中删除
step
规则,而不删除任何HTML属性或更改DOM

$('[name="date1"]').rules('remove', 'step');
请注意,在调用此方法之前,jQuery验证插件必须已经在页面上初始化

此解决方案仅对一个名为“date1”的特定字段有效。是否可以设置类似“忽略所有步骤属性”之类的不引人注目的验证规则

您只需将选择器更改为针对包含
步骤
属性并包含在
中的所有元素。each()
。jQuery Validate将只匹配目标组中的第一个元素,因此必须使用
。each()

$('[step]').each(function() {
    $(this).rules('remove', 'step');
});

很抱歉,我接受了您的回答,但是其他隐藏错误导致您的解决方案看起来像在工作,而实际上隐藏的错误正在中断验证。当我解决该错误时,您的解决方案仍然不工作,并且仍然不支持输入类型日期的
步骤属性
被抛出。我真的很抱歉y表示不便。我还编辑了我的答案,并提供了进一步的详细信息。@Marmellad-FYI。您不能使用没有名称属性的输入。无论您以何种方式设置目标,此插件都必须使用名称属性才能正常工作。“flatpickr在初始化后创建没有名称的新输入”
$('[step]').each(function() {
    $(this).rules('remove', 'step');
});