jQuery 验证忽略:":hidden"并不总是有效



我有一个函数来验证一些特殊的表单,但我不能排除隐藏元素

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: []
   });
});

相关内容

  • 没有找到相关文章

最新更新