【发布时间】:2020-03-05 03:02:22
【问题描述】:
我有一个表格,要求用户选择出生日期。作为日期选择器,我使用flatpickr,它在移动设备上创建使用本机移动日期选择器的新输入字段。创建的元素如下所示:
<input type="date" step="any" min="..." max="...">
我也在使用 JQuery 不显眼的验证,但是表单验证崩溃并出现以下错误:
Step attribute on input type date is not supported
我为这个错误找到了solution:
onReady: (selectedDates, dateStr, instance) => {
if (instance.isMobile) {
$(instance.mobileInput).removeAttr("step");
}
}
但是 step 属性完全从输入中删除,这不是很好。而且这个错误更多地与不显眼的验证有关,而不是 flatpickr。我找到的另一个解决方案 here 我认为更好,添加了新的验证规则:
$("#testingform").validate({
rules: {
date1: {step: false}
}
});
我知道这个验证是针对原生 JQuery 验证的,但为了简单起见,我提出了这个。 (您可以通过$("form").validate().settings 访问不显眼的验证规则。)但是,此解决方案仅对具有name="date1" 的特定字段有效。是否可以设置不显眼的验证规则,例如“忽略所有步骤属性”?
编辑:
我尝试了@Sparky 提出的解决方案,但它不起作用。我试图玩弄不同输入的规则,但我无法删除它们中的任何一个。似乎在使用不显眼的包装器时,.rules("remove",...) 不起作用。实际上,我可以使用以下代码 delete jq("form").validate().settings.rules["NameOfInput"].step 删除规则。但是这对我的情况不起作用,因为 flatpickr 在没有名称的初始化后会创建新的输入,所以我无法通过 jq("form").validate().settings.rules
【问题讨论】:
-
"flatpickr 在没有名称的初始化后创建新输入" name 属性。如果不重新编写插件的核心,则没有解决方法可以解决缺少的
name属性。
标签: jquery jquery-validate unobtrusive-validation