【问题标题】:Variable as field name jquery validate rules变量作为字段名 jquery 验证规则
【发布时间】:2015-05-21 22:32:39
【问题描述】:

我目前正在使用 jquery 验证规则插件,但遇到了以下问题。虽然我的一些输入字段具有静态 ID。有些字段是动态生成的,因此 ID 不是静态的。不幸的是,我无法控制生成的 ID。我可以使用 .each 循环来获取 ID,但是如何将 ID 变量传递给规则进行验证。有没有办法在字段名称中使用变量?如果只需要这些字段,我将使用不同的方法,但是我需要对输入进行正则表达式检查。

$j('form').validate({
    rules:{
        txtFirstName: 'required',                                                        
        txtLastName: 'required',                               
        txtEmail: 'required',
        randomIdFieldVariable: 'Regex check"
    }
);

【问题讨论】:

  • 这个插件没有使用元素的ID...只能使用name。但是,您不能在.validate() 方法中使用变量来代替字段name。如果您需要一些建议的解决方法,您必须通过构建一个更完整的示例来更好地解释这一点。

标签: jquery regex jquery-validate each


【解决方案1】:

.validate() 方法中,您不能使用元素id,也不能使用变量代替字段name

$('#myform').validate({
    rules: {
        fieldname: { // <- MUST be the 'name' attribute of the element
            required: true
        }
    }
});

但是,当元素的name未知时,还有其他添加规则的方法。

  1. 可以通过布尔值声明的某些规则可以声明为class

    <input type="text" name="foo" class="required" />
    
  2. 某些规则也作为 HTML 5 属性存在,只需在输入元素中包含 HTML 5 属性即可声明。

    <input type="text" name="foo" required="required" />
    

    这可能对您有用,因为 jQuery 验证插件将使用一个名为 pattern 的 HTML 5 验证属性。 pattern 的值是一个正则表达式。见:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input

  3. 您可以使用任何 jQuery 选择器the jQuery Validate plugin' .rules('add') method 附加到 jQuery .each()。您不必提前知道name,但所有用于验证的元素必须仍包含唯一的name 属性。

    $('.myClass').each(function() {
        $(this).rules('add', {
            required: true,
            messages: { // <- optional
                required: "optional custom message"
            }
        });
    });
    

【讨论】:

  • 你就是男人!我什至没有考虑使用模式属性。像魅力一样工作!
  • 我猜这在这个例子中是隐含的,但是:一定要在使用 .rules(...) 处理单个字段之前调用 .validate(...)。它让我抱怨设置不可用。
  • 谢谢。在文档中很容易忽略这一点,但有一个直接链接很好。我没有深入了解这一点,并且我在 jqueryvalidation.org 网站上缺少一个完整的示例。也许我应该提出写一个;-)
  • @gkephorus,好吧,在 SO 上有 the jquery-validate wiki page on the tag 和类似数千个代码示例。
猜你喜欢
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2019-02-13
相关资源
最近更新 更多