使用each()的jQuery表单验证不能按预期工作

时间:2014-03-10 20:43:25

标签: jquery forms validation each

我正在尝试使用类' .required&#39使用each()。

问题是,它不断突破循环并始终跳转到“返回true”;'即使所有字段都是空的。

这是html:

<input type="text" id="personal-name" name="personal-name" class="required-field" placeholder="First Name">

这是jQuery代码:

function validForm() {

    var privacyApprove = $('#privacy-approved');
    var errorWindow = $('.errors');

    // Fade out the error after 3 seconds
    var errorFadeOut = setInterval(function () {
        errorWindow.fadeOut();
        clearInterval(errorFadeOut);
    }, 3000);

    if (!privacyApprove.is(':checked')) {
        errorWindow.fadeIn().text("יש להסכים לתנאי התקנון");
        return false;
    }

    $('input.required-field, textarea.required-field').each(function() {
            if ($(this).val() == 0) {
                errorWindow.fadeIn().text("אנא השלם את כל הפרטים הנדרשים המודגשים באדום");
                $(this).addClass('input-error');
            } else {
                $(this).removeClass('input-error');
            }
    });

    return true;
}

我做错了什么?

谢谢! :)

2 个答案:

答案 0 :(得分:0)

好像你想做

if ($(this).val() == '')

而不是

if ($(this).val() == 0)

有效的替代方案是

if ($(this).val().length == 0)

此外,您应该始终避免返回true。将您的返回值更改为此

return $('.input-error').length == 0

答案 1 :(得分:0)

如果代码获得每个块,它将始终返回true。您没有任何返回false的逻辑。

可能在每个

之后添加类似的东西
if ($('input-error'))
  return false
else
  return true