jQuery验证:如何验证非表单元素?

前端之家收集整理的这篇文章主要介绍了jQuery验证:如何验证非表单元素?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一张附有贴图的表格.点击地图将形式的div添加隐藏的输入.

我想要一个验证规则来检查该div是否有任何隐藏的元素.到目前为止,我只能使用一个虚拟元素,我必须在发布表单之前手动删除

<form action="..." method="post" id="signup">
  <!-- ... -->
  <div id="zones_selected"><input type="hidden" name="dummy"></div>
  <!-- ... -->
</form>

$.validator.methods.zones = function (value,element,param) { return ($zone_holder.find('input[name!=dummy]').length > 0); };
$('#signup').validate({
  rules: {
    //...
    'dummy': 'zones'
  },//...
  submitHandler: function(form) { $(form).find('input[name=dummy]').remove(); form.submit(); }
});

但是,由于我的自定义验证器方法似乎没有触发非高亮度功能,所以这些留下了非常大的误差,我感觉到只有输入输入才能进行表单验证(非常不引人注意).

我想要的是没有额外的submitHandler和一个规则来检查在div中存在隐藏的输入将会有一个非高光触发(这样,如果用户点击地图 – 创建一个新的隐藏输入 – 消息我告诉他们这样做会消失)

什么是最好的方式来完成这个?

解决方法

我以前试图做到这一点.我不相信有一种方法可以做,而不需要对jquery.validator代码库做一些修改.

在查看JQuery.Validator.js时,请查看ln 423上的’elements’功能,你会看到这样的东西

return $([]).add(this.currentForm.elements)
            .filter(":input")
            .not(":submit,:reset,:image,[disabled]")
            .not( this.settings.ignore )
            .filter(function() {
                !this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned",this);

                // select only the first element for each name,and only those with rules specified
                if ( this.name in rulesCache || !validator.objectLength($(this).rules()) )
                    return false;

                rulesCache[this.name] = true;
                return true;
            });

过滤器(“:input”)会让你感到悲伤.

原文链接:https://www.f2er.com/jquery/176266.html

猜你在找的jQuery相关文章