.valid () проверяет только первый ввод с плагином jQuery Validation - PullRequest
6 голосов
/ 04 августа 2010

Мне трудно заставить плагин jQuery Validation работать так, как я хочу.

У меня есть форма с несколькими необходимыми входами, правила, как показано ниже:

$("#makeEvent").validate({
    onfocusout: false,
    rules: {
        name: {
            required: true,
            minLength: 2,
            maxLength: 100
        },
        host: {
            required: true,
            minLength: 2,
            maxLength: 100
        },
        startDate: {
            required: true,
            date: true
        },
        endDate: {
            required: true,
            date: true
        },
        desc: {
            required: true,
            minLength: 10,
            maxLength: 255
        },
        webpage: {
            required: false,
            url: true
        },
        email: {
            required: true,
            email: true
        },
    }
});

Теперь у меня есть специальный вызов .click (), где я хочу проверить форму, а затем показать предварительный просмотр для пользователя, прежде чем разрешить ему отправить форму.См. Нижеприведенную функцию:

$('#submitPreview').click(function() {
    if($("#makeEvent").valid() === false) {
        //What to do if validation fails
    } else if($("#makeEvent").valid() === true) {
        //Show the preview and let the user either make changes or submit the final result
    }
});

Но что происходит, так это то, что функция проверяет только первый ввод (имя) и даже неверно его проверяет (правила требуют минимум 2 символа, но все же проверяется только сВведен 1 символ. Он возвращает false только в том случае, если символы вообще не добавлены).

Возможно, мой подход не самый лучший, поэтому я открыт для любых предложений.Если вы хотите взглянуть на грязный исходный код, вы можете увидеть функцию в действии здесь: http://event.gusthlm.se/make.php

1 Ответ

20 голосов
/ 04 августа 2010

Я вижу две проблемы: вы не используете атрибут name в своих полях ввода и используете name в качестве одного из идентификаторов (вызывает IE всех видов горя при отправке формы).

Я бы предложил добавить атрибуты name к вашим элементам input, select и textarea и заменить "name" на что-то вроде "thename":

<label for="thename">Börjar</label>
<input type="text" name="thename" id="thename"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...