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

Car*_*xer 2 regex each jquery jquery-validate

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

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

Spa*_*rky 5

你不能使用元素id,也不是一个变量代替场name的范围内.validate()的方法。

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

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

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

    <input type="text" name="foo" class="required" />
    
    Run Code Online (Sandbox Code Playgroud)
  2. 某些也作为 HTML 5 属性存在的规则可以简单地通过在 input 元素上包含 HTML 5 属性来声明。

    <input type="text" name="foo" required="required" />
    
    Run Code Online (Sandbox Code Playgroud)

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

  3. 您可以将jQuery的验证插件.rules('add')的方法来一个jQuery.each()使用任何jQuery选择你的愿望。您不必name事先知道,但所有用于验证的元素仍必须包含唯一name属性。

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