Получение дубликатов сообщений об ошибках с плагином проверки JQuery - PullRequest
5 голосов
/ 21 сентября 2010

Я новичок в JQuery и плагине проверки.

Краткое описание: Я хотел, чтобы все мои сообщения об ошибках отображались в одном элементе div в верхней части формы, а не рядом с каждой меткой.После небольшого расчесывания головы и поиска в сети, я пришел к следующему, который работает, но сообщение sourceurl: дважды появляется при проверке.Я понятия не имею, почему.Любая помощь будет оценена.Приветствия, Джон

Исходный код:

<form name="siteauth" id="siteauth" action="savedata" type="POST">
    <div class="message"></div>
    <fieldset>
        <label>Short Description:</label>
        <br><input id="shortdescription" size="75" type="text" maxlength="50"  name="shortdescription"/>
        <br><label>Source URL:</label>
        <br><input id ="sourceurl" size="75" type="text" maxlength="500"  name="sourceurl"/>
        <br><label>Callback URL:</label>
        <br><input id="callbackurl"  size="75" type="text" maxlength="500" name="callbackurl"/>
        <br><label>Callback Content:</label>
        <br><input id="in4"  size="75" type="text" maxlength="100" name="callbackcontent"/>
        <br>
        <br><input type="submit" value="Add"/>
    </fieldset>
</form>

<script src="http://code.jquery.com/jquery-latest.js"></script>
 <script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/validate/jquery.validate.js"></script>


<script>

    $(document).ready(function(){
        $("#siteauth").validate({
            rules: {
                shortdescription: "required",
                sourceurl: "required"
            },
            messages: {
                shortdescription: "Enter a short description. ",
                sourceurl: "Enter a Source URL. "
            },
            errorElement: "div",
            wrapper: "div class=\"message\"",
            errorPlacement: function (error, element){
                error.appendTo($(".message"));
            }
        });

    });

Ответы [ 2 ]

4 голосов
/ 21 сентября 2010

Это потому, что вы также дали класс оболочке внутри элемента error, так что:

wrapper: "div class=\"message\"",

Должно быть просто:

wrapper: "div",

Тогда он не добавляет его в верхний контейнер и элементов, которые он там создает. Вы можете попробовать здесь .


Вышеуказанное работает, но лучшим решением является использование предполагаемого свойства errorLabelContainer, которое также отображается / скрывается автоматически, если есть / нет ошибок, например:

$(function(){
    $("#siteauth").validate({
        rules: {
            shortdescription: "required",
            sourceurl: "required"
        },
        messages: {
            shortdescription: "Enter a short description. ",
            sourceurl: "Enter a Source URL. "
        },
        errorElement: "div",
        wrapper: "div",
        errorLabelContainer: ".message"
    });
});​

Попробуйте эту версию здесь .

0 голосов
/ 21 сентября 2010

Вместо использования класса используйте атрибут ID.Например, <div class="message" id="errmsg"></div> и измените строку Jquery наerrorPlacement: function (error, element) { error.appendTo($("#errmsg")); }

Живой пример Здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...