当存在多个表单jQuery时选择表单子项

时间:2011-11-25 01:45:51

标签: jquery forms contains

我正在处理一个有多种形式的网页。一些基本的HTML表单和一些AJAX表单。我有一个创建的输入验证,让我举个例子......如果输入有一个class =“required”,只要按下提交按钮,如果任何必需的类为空,那么表单就不会提交。哪个方法很有效......直到您有多个表单,其中包含不适用于您提交的部分的必填字段。

我能够找到最接近的形式$(this).closest(“form”)并且它正确地获取了表单元素,然后我需要能够仅通过该表单的子元素循环。我已经尝试过:.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的ID的表单,因此它们将是唯一的并且允许我在没有任何问题的情况下定位事物,只是想把它扔出去,如果它可以帮助导致解决方案

我感谢任何帮助=)

1 个答案:

答案 0 :(得分:1)

$(this).closest("form").find(":input")是查找所有输入的正确方法。我认为问题在于$('.required')。该调用再次从全局级别开始搜索,从而查找页面上所有表单的输入。

我认为首先不需要.find(":input")。只需使用form.find(".required")获取必填字段并循环显示这些字段。