jQuery 验证 : How to validate a non-form element?

标签 jquery jquery-validate

我有一个附有 map 的表格。单击 map 会将隐藏的输入添加到表单中的 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(); }
});

但是,这些错误放置还有很多不足之处,因为我的自定义验证器方法似乎永远不会触发 unhighlight 函数,而且我觉得只为表单验证(不是很不引人注目)。

我想要的是没有额外的 submitHandler 和一个规则来检查 div 中是否存在隐藏输入,该 div 会具有 unhighlight 触发器(这样,如果用户点击 map ——这会创建一个新的隐藏输入——我显示的告诉他们这样做的消息将会消失)。

实现这一目标的最佳方法是什么?

最佳答案

我过去曾尝试这样做。我不相信有一种方法可以在不对 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”)会让你悲伤。

关于jQuery 验证 : How to validate a non-form element?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3735777/

相关文章:

javascript - jQuery 验证和客户端事件

javascript - 更改列表中的文本

jquery - 如何使用 jQuery 获取容器中 DIV 的组合宽度并将该值传递给另一个元素?

javascript - 我需要像包含的示例一样进行下拉和下拉

jquery - Slimbox - 悬停不工作,关闭按钮不产生

javascript - Ajax 总是在成功时刷新页面

jQuery 验证插件对我不起作用

jquery - 如何从 jQuery Validate 中的所有表单输入中删除 'required' 规则?

jquery - 验证错误消息在有效时不会隐藏

javascript - jquery验证密码强度大小写