我有一个函数来验证一些特殊的表单,但我不能排除隐藏元素
function specialFormValidation() {
$("#specialForm").validate({
ignore: ':hidden',
errorPlacement: function(sError, oElement) {
$('.tooltip ').remove();
$(oElement).tooltip({
title: sError[0].textContent + $(oElement).is(':hidden'),
animation: false,
placement: 'right',
trigger: 'manual',
container: 'body'
});
$('.error').tooltip('show');
}
});
就像你可以看到的,我已经设置了忽略参数,但仍然显示隐藏元素的工具提示,我使用jQuery Validatre v1.10.0和引导工具提示。如果我输入ignore: ':visible',
,我可以排除可见元素,但它不能用于隐藏元素。
可能是忽略元素在加载DOM后被脚本隐藏的元素上不起作用
我试着修复它(刷新可见性状态),但也不工作:
function specialFormValidation() {
var ignored = $(':hidden');
$("#specialForm").validate({
ignore: ignored,
errorPlacement: function(sError, oElement) {
...
ignore
选项用于告诉插件忽略哪些输入元素(用于验证)。我不知道为什么你需要担心你的工具提示,因为这些不是输入元素,它们永远不会被这个插件首先验证。
忽略所有隐藏元素是默认行为。事实上,':hidden'
与插件已经使用的相同。
换句话说,只要你使用1.9+版本的插件,你根本不需要指定ignore: ':hidden'
。完全省略ignore
选项,插件将忽略任何隐藏的内容
引用OP :
"可能是忽略元素在加载DOM后被脚本隐藏的元素不起作用"
它不是这样工作的。如果你动态地切换元素的可见性,插件只会在它被隐藏时忽略它。
"我试着修复它(刷新可见性状态),但也不工作:"
不能多次调用.validate()
(带或不带新选项)。.validate()
方法只在加载到初始化插件的页面时调用。后续的调用总是被忽略。
在验证表单之前,必须在document ready上调用"ignore"
$(document).ready(function () {
$.validator.setDefaults({
ignore: []
});
});