jquery - jQuery Validation 验证元素,即使设置为“required: false”
问题描述
我的表单上有一个不需要的复选框,我在我的规则中将其设置为必需的“false”,但它仍在验证并向父级添加一类“错误状态”。不确定是否有办法只对这个单一元素进行强制验证?
HTML:
<div class="form__input-row row--flex">
<div class="form-field row--flex">
<input id="copay-checkbox" type="checkbox" name="checkbox_eligible" class="form-input--checkbox">
<label class="form-label--opt-in row--flex align--flex-start">
<div class="opt-in__pseudo-input"></div>
<span class="form-label--opt-in__text">
I would like to receive a Card.
</span>
</label>
</div>
</div>
jQuery:
$("#cardForm").validate({
rules :{
checkbox_eligible: {
required: false,
},
},
errorPlacement: function (error, $element) {
var inputType = $element.attr('type'),
$parentField = $element.closest('.form-field');
if (inputType === 'checkbox') {
$parentField.addClass('error-state');
$parentField.append(error);
} else if (inputType === 'radio') {
error.insertAfter($parentField);
} else {
$parentField.append(error);
}
} else {
error.insertAfter($element);
}
},
解决方案
但它仍在验证并向父级添加一类“错误状态”。
这是“验证”,因为您有一个带有规则的字段,每次触发时都需要对其进行评估。但是,这不是“失败”的验证。
在这种情况下,添加类的是您自己的errorPlacement
函数error-state
......
errorPlacement: function (error, $element) {
....
if (inputType === 'checkbox') {
$parentField.addClass('error-state');
.....
}
},
这不是你应该做的errorPlacement
。它的唯一目的是将错误消息放置在您的布局中。它不应该用于添加/删除任何验证类。
而且由于您没有删除此类的代码,因此它将保留在那里。同时,尽管插入了您的自定义类,但验证插件仍将此字段视为“有效”。
如果您想在无效/有效验证时添加/删除类或做其他事情,您将使用highlight
和unhighlight
回调函数。
从您的其他问题之一的答案中引用我自己的话:
“......你不应该使用它
errorPlacement
来添加类。你应该只使用它来将消息放入你的布局中。......”
也无需使用required: false
,因为这是默认设置。如果您发现自己设置required
为false
,则意味着您的方法有其他问题。
不确定是否有办法只对这个单一元素进行强制验证?
不知道您真正想要实现什么,但您可以使用该.valid()
方法以编程方式触发字段验证。
$('#my_field').valid();
但是,这只会强制插件评估该字段,这不会解决您的问题,因为您的自定义errorPlacement
函数添加了一个插件无法删除的验证类。
推荐阅读
- android - Tor socks 代理出现错误“规则集不允许连接”
- javascript - 当我登录我的路由器登录页面时,它有这个自定义登录表单,但作为一个警告框。如何以及是否可以在表单中进行这种登录?
- ios - iOS PWA 闪屏?
- c - 如何知道 .so 库文件中的什么函数以及如何将特定的二进制代码链接到您的代码中?
- r - ggplot2 - 在两个相邻的 y 变量之间为三个 x 中的每一个绘制一条线(具有两个颜色类别)
- haskell - 在 `\case` 语句中从长期计划中截断 1 年付款 (Haskell)
- c++ - C++ - 将声明的数组作为参数传递给结构
- python - Python 语法错误:语法无效。想不通为什么?
- javascript - 将多个组件导入一行(原子设计 + Vue.JS)
- javascript - Assigning value for all arrays in two dimensional array, but shouldn't