Удалять проверку jQuery на основе имени

Я пытаюсь использовать плагин проверки 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, если класс отсутствует.

Я хочу использовать классы ТОЛЬКО для проверки.

Спасибо.

Ответы

Ответ 1

Используйте встроенный метод 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 DEMO

Ответ 2

  • Просто скачайте источник, например http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.js, а затем
  • Сделайте замену слова для слова name и замените его другим атрибутом, например validate_on
  • Используйте этот новый источник вместо старого.

Ответ 3

Что делать, если вы используете определенное имя класса только для проверки? Что-то, что отличается от name?

Например: validatable-username (не обязательно так долго, но вы получите мою идею)

Тогда он не может отступить от имени.