Jquery 如何检查所有字段是否有效?

Jquery 如何检查所有字段是否有效?,jquery,forms,validation,prestashop,prestashop-1.6,Jquery,Forms,Validation,Prestashop,Prestashop 1.6,此代码检查每个元素是否有效,并根据其情况附加css类。 如果元素有效,它将从提交按钮(blocksender)中删除禁用的标记 但是,, 当某个元素有效而某个元素无效时 如果从有效元素中调出焦点,则会启用“提交”按钮。这是个问题 如何检查所有元素?如果它们都有效,我可以启用submit按钮 $(document).on('focusout', 'input.validate, textarea.validate', function() { if ($(this).hasClass('

此代码检查每个元素是否有效,并根据其情况附加css类。 如果元素有效,它将从提交按钮(blocksender)中删除禁用的标记

但是,, 当某个元素有效而某个元素无效时 如果从有效元素中调出焦点,则会启用“提交”按钮。这是个问题

如何检查所有元素?如果它们都有效,我可以启用submit按钮

$(document).on('focusout', 'input.validate, textarea.validate', function() {

    if ($(this).hasClass('is_required') || $(this).val().length)
    {

        var result = window['validate_'+$(this).attr('data-validate')]($(this).val())

        if (result)
        {
            $(this).parent().removeClass('form-error').addClass('form-ok');
            $(".blocksender").removeAttr("disabled", "disabled");

        }
        else
        {
            $(this).parent().addClass('form-error').removeClass('form-ok');
            $(".blocksender").attr("disabled", "disabled");
        }
    }
});
这来自Prestashop 1.6中的validate.js,我在contact_form.tpl中使用它,类似于:

<input class="validate is_required" type="text" id="email" name="from" data-validate="isEmail"/>


我将使用错误类计算元素的数量:如果是0,则启用按钮,如果不是,则禁用它

$(document).on('focusout', 'input.validate, textarea.validate', function() {

    if ($(this).hasClass('is_required') || $(this).val().length)
    {

        var result = window['validate_'+$(this).attr('data-validate')]($(this).val())

        if (result)
        {
            $(this).parent().removeClass('form-error').addClass('form-ok');

            // There's the chance of no errors, check it.
            var numItems = $('.form-error').length;// Check number of elements with class error.

            if(numItems === 0) {// If all items are ok, remove disable.
               $(".blocksender").removeAttr("disabled", "disabled");
            }
        }
        else// There's at least one error, no need to check, disable it.
        {
            $(this).parent().addClass('form-error').removeClass('form-ok');
            $(".blocksender").attr("disabled", "disabled");
        }
    }
});

您应该遍历所有表单元素,以检查它们是否有效。在代码中,您只检查实际输入元素:
if($(this).
。在您的情况下,应该类似于:
$('#form input')。每个(function(){if($(this).
也可以从该部分中删除一个“disabled”-.removeAttr(“disabled”,“disabled”)