Выберите дочерние формы, когда присутствует несколько форм jQuery - PullRequest
1 голос
/ 25 ноября 2011

Я имею дело с веб-страницей, которая имеет несколько форм ... некоторые базовые формы HTML и некоторые формы AJAX.У меня есть созданная проверка для входных данных, позвольте мне привести пример ... если вход имеет class = "required", когда нажимается кнопка отправки, если какие-либо обязательные классы пусты, тогда форма не отправляется.Это прекрасно работает ... пока у вас нет нескольких форм с обязательными полями, которые не применяются к разделу отправки.

Я могу найти ближайшую форму $ (this) .closest ("форма") и ееполучает правильно элемент формы, тогда мне нужно иметь возможность зацикливаться только через дочерние элементы этой формы.Я пробовал: .children (': input'), .find ('input') и честно ко многим перечислить.

Вот код для выбора кнопки

$('#formSubmit').click(function (e) {
        var submit = true;
        var form = $(this).closest("form");
        var formID = $(form).attr("id");
        e.preventDefault();

        $(form).children(":input").each(function () {
            if ($('#ERROR').length > 0) {
                submit = false;
                alert("Please fix errors to continue");
            }
            $('.required').each(function () {
                if ($(this).val() == "" || $(this).val() == undefined) {
                    submit = false;
                    $(this).css({ 'background-color': '#fef236' });
                }
            });
        });
        if (submit == true) {
            this.form.submit();
        }
    }); //End of #formSubmit

Также интересно, что я начал создавать формы с идентификаторами GUID, поэтому они будут уникальными и позволят мне нацеливать вещи безлюбые вопросы, просто хотел выбросить это, если это может помочь привести к решению

Я ценю любую помощь =)

1 Ответ

1 голос
/ 25 ноября 2011

$(this).closest("form").find(":input") - это правильный способ найти все входные данные. Я думаю, что проблема заключается в $('.required'). Этот вызов снова начинает поиск с глобального уровня, таким образом находя входные данные из всех форм на странице.

Я не вижу необходимости делать .find(":input") во-первых. Просто наберите обязательные поля с помощью form.find(".required") и переберите их.

...