变量作为字段名 jquery 验证规则

Variable as field name jquery validate rules

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

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

您不能在 .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"
            }
        });
    });