2

我正在尝试使用 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 属性。

我只想使用类进行验证。

谢谢。

4

3 回答 3

4

使用内置rules()方法添加规则并通过class. 请参阅文档。

注意:调用必须调用该方法。.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 演示

于 2012-12-17T06:26:56.463 回答
-1
  1. 只需下载源代码,例如http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.js,然后,
  2. 对单词进行搜索替换name并将其替换为另一个属性,例如validate_on
  3. 使用该新来源代替旧来源。
于 2012-12-06T01:51:31.767 回答
-1

如果您仅使用特定的类名进行验证怎么办?有什么不同name

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

然后它不能回退到名称。

于 2012-12-06T02:05:27.067 回答