删除基于名称的jQuery验证

时间:2012-12-06 01:40:00

标签: jquery jquery-validate

我正在尝试使用jQuery验证插件来验证表单,但我需要完全删除它使用name属性的能力。我的表单的一部分是基于递增的计数器动态创建的,我只想使用类。

有办法做到这一点吗?

我已经实现了addClassRules方法,并为每个字段添加了所有类,但是如果我从字段中删除该类,它仍然会根据名称字段进行验证。

这真的开始变得令人沮丧。

jQuery.validator.addClassRules({
    username: { 
        required: true, 
        minlength: 2, 
        remote: "whatever.php" 
    }
});

<div class="control-group">
    <label class="control-label" for="username">
        <?php echo $entry_username; ?>
    </label>
    <div class="controls">
        <input type="text" class="input-large" 
               name="username" id="username" 
               value="<?php echo $username; ?>" required>
    </div>
</div>

正如您所看到的,此元素没有一个用户名类,但如果该类不存在,则验证将返回使用name属性。

我想仅使用类进行验证。

感谢。

3 个答案:

答案 0 :(得分:4)

使用内置的rules()方法添加规则并按class分配。 See documentation.

注意:必须在致电.validate()之后调用此方法

我有一个非常大的表单,用户可以动态添加字段。这是我用来确保新创建的字段也是验证的一部分的确切方法。

(如果您从class移除了input,则 <无法}对name属性进行验证,因为name.validate()选项或规则中的任何位置都不使用}属性。)

<强> HTML:

<form id="form">
    <input type="text" class="myclass" name="whatever" />
</form>

<强> jQuery的:

$("#form").validate({
    // my options
});

// the following method must come AFTER .validate()
$('#form').find('.myclass').each(function() {
    $(this).rules('add', {
        required: true,
        minlength: 5,
        messages: {
            required: "Required input",
            minlength: jQuery.format("At least {0} characters are necessary")
        }
    });
});

jsFiddle DEMO

答案 1 :(得分:-1)

  1. 只需下载来源,例如http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.js,然后
  2. 搜索替换单词name并将其替换为其他属性,例如validate_on
  3. 使用新来源代替旧来源。

答案 2 :(得分:-1)

如果您仅使用特定的类名进行验证该怎么办?与name不同的东西?

例如:validatable-username(不一定要那么长,但你明白我的想法)

然后它不能回溯到这个名字。