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

时间:2015-05-21 22:32:39

标签: jquery regex jquery-validate each

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

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

1 个答案:

答案 0 :(得分:4)

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

$('#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 Validation插件将使用名为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"
            }
        });
    });