флажок валидатора jquery "элемент не определен" - PullRequest
4 голосов
/ 15 апреля 2011

Я пытаюсь использовать плагин jQuery Validation для создания многошаговой формы с вкладками, но я продолжаю получать сообщение об ошибке «элемент не определен», когда я пытаюсь перебрать все входные данные. Какие-либо предложения? Я не понимаю, что не так. Я попытался установить флажок в нескольких местах, и, кажется, это происходит повсеместно (т.е. не только на 2-й последней вкладке).

var tabs = $("#tabs").tabs({

        disabled: [1,2,3,4,5],

        select: function(event, ui) {
            var valid = true;
            var current = $(this).tabs("option", "selected");
            var panelId = $("#tabs ul a").eq(current).attr("href");



            $(panelId).find("input").each(function(index, element) {
                if (!validator.element(this) && valid) {

                    if(ui.index > current) {
                        valid = false;
                    }
                    else
                    {
                        //re-disable the next tab 
                    }
                }
            });


            return valid;
        }   

    });


    $(".nexttab").click(function() {
        var selected = $("#tabs").tabs("option", "selected");
        $("#tabs").tabs("enable", selected+1);
        $("#tabs").tabs("option", "selected", selected + 1);
    });

HTML Part:

<div id="general">
</div>

<div id="problemtab">

    <p>
        <input type="checkbox" name"response" id="response" value="agree" class="required"><label for="response">I Agree</label>
    </p>

    <p>
        <a class="prevtab navbutton"><span>Prev</span></a>
        <a class="nexttab navbutton"><span>Next</span></a>
    </p

</div>

<div id="lasttab">
</div>

Спасибо за любую помощь!

Edit:

It's giving me an error in jquery-validate.js:787

    staticRules: function(element) {
        var rules = {};
        var validator = $.data(element.form, 'validator'); // <---- Error here
        if (validator.settings.rules) {
            rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
        }
        return rules;
    },

Редактировать # 2: элемент / это определяется как [объект HTMLInputElement]

Вот мой валидатор:

var validator = $("#myForm").validate({

    ignore : ['#tabs .inactive input'], // tells the validator to only validate elements on your current tab

errorElement: "div",
wrapper: "div",  // a wrapper around the error message
errorPlacement: function(error, element) {

        if (element.parent().hasClass('group')){
            element = element.parent();
        }


    offset = element.position();
    error.insertBefore(element)
    error.addClass('message');  // add a class to the wrapper
    error.css('position', 'absolute');
    error.css('left', offset.left + element.outerWidth());
    error.css('top', offset.top);


    }
});

Ответы [ 3 ]

5 голосов
/ 04 ноября 2011

Вы забыли знак равенства для атрибута name вашего флажка, поэтому атрибут name не установлен.

name"response" должно быть name="response"

Вчера я заметил, что jquery.validate требует имя для элементов, чтобы работать, или это вызовет эту ошибку.

1 голос
/ 25 декабря 2012

Убедитесь, что у вас есть только одна форма на вашей странице. Раньше у меня было две формы на одной странице, и это вызывало проблему, о которой вы упоминаете.

0 голосов
/ 03 июня 2016

Эта ошибка также может быть связана с этой проблемой JQuery со скрытыми чекбоксами (или радиобоксами).Эта проблема не решена, но ее можно решить, установив (временно) validatorInstance.settings.ignore =''.

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