Удалить проверку на основе имени на основе 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>

Как вы можете видеть, этот элемент НЕ имеет класса имени пользователя, но проверка отступает от использования атрибута имени, если класс отсутствует.

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

Благодарю.

3 ответа

Решение

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

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

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

Тогда это не может вернуться к названию.

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