Javascript 验证总是返回false,即使它是正确的。为什么?

Javascript 验证总是返回false,即使它是正确的。为什么?,javascript,jquery,Javascript,Jquery,我正在验证表格。它正确地验证所有字段,但当我在文本字段中输入正确的数据时,它仍然不会处理数据并返回所有错误,而我希望它返回所有正确的 这是我的js代码 var url, container, form, View = { init: function () { container = $('.container'); $(document).on('submit', '#form', View.findView);

我正在验证表格。它正确地验证所有字段,但当我在文本字段中输入正确的数据时,它仍然不会处理数据并返回
所有错误
,而我希望它返回
所有正确的

这是我的js代码

var url, container, form,
    View = {
        init: function () {
            container     = $('.container');
            $(document).on('submit', '#form', View.findView);
        },

        loadViews: function (view, flag, e) {
            e.preventDefault();
            var search = $('.search');

            if( flag ) {
                if ( View.validation.emptyFieldsValidation() == true ) {
                    console.log('everything correct');
                } else {
                    console.log('everything incorrect');
                }
            }
            return false;
        },

        validation: {
            emptyFieldsValidation: function () {
                var inputs, field;

                $('#form input').each(function (i, el) {
                    inputs = $(this);
                    if ( inputs.val() == '' ) {
                        inputs.css('border', '1px solid red');
                        return false;
                    } else {
                        inputs.css('border', '1px solid #ccc');
                        if (inputs.hasClass('from')) {
                            console.log('from');
                            if (View.validation.validateAddress(inputs.val())) {
                                console.log('from correct address');
                                return true;
                            }
                            else {
                                inputs.css('border', '1px solid red');
                                console.log('from incorrect address');
                                //return false;
                            }
                        }
                        if (inputs.hasClass('to')) {
                            console.log('to');
                            if (View.validation.validateAddress(inputs.val())) {
                                console.log('to correct address');
                                //return true;
                            }
                            else {
                                inputs.css('border', '1px solid red');
                                console.log('to incorrect address');
                                //return false;
                            }
                        }
                        if (inputs.hasClass('time')) {
                            if (View.validation.validateForNumber(inputs.val())) {
                                console.log('time correct');
                                //return true;
                            }
                            else {
                                inputs.css('border', '1px solid red');
                                console.log('time incorrect');
                                //return false;
                            }
                        }
                    }
                });
                return false;
            },

            validateAddress: function (val) {
                var streetregex = /^[\w+\s]+\d+,\s*[\s\w]+$/;
                if (streetregex.test(val)) return true;
                else return false;
            },

            validateForNumber: function (val) {
                if (!isNaN(val)) return true;
                else return false;
            }
        }
    };

View.init();
​ 这是我的html代码

<section class="search">
<form id="form" action="">
    <section>
        <input type="text" name="from" class="from address" id="addressone" placeholder="From">
    </section>
    <section>
        <input type="text" name="to" class="to address" id="addresstwo" placeholder="To">
    </section>
    <section>
        <label>Time</label>
        <input type="text" name="hrs" placeholder="Hours" class="t1 time">
        <span>:</span>
        <input type="text" name="mins" placeholder="Mins" class="t1 time">
        <button class="button">Search</button>
    </section>
</form>
</section>

时间
:
搜寻
更新

我在控制台中得到这个输出


您似乎忽略了这样一个事实,即您的
emptyFieldsValidation
函数将始终
返回false
,因为其主体中的所有其他
返回
语句实际上都是“迭代器”函数的一部分。谈到后者,请注意,
$中的
返回false
。每个
回调将停止迭代

一种可能的解决方法是将迭代器函数中的所有
return false
语句替换为填充验证错误数组。然后(在
$之后。每行之后)您可以检查其长度(或者只执行
返回!!errors.length
)。例如:

emptyFieldsValidation: function () {
  var errors = [];
  ...
  $('#form input').each(function() {
    if (! someValidationCheck) { 
      errors.push(someValidationAttribute);  
    }
  });
  ...
  return !!errors.length;

你能给我一些代码,这样我就可以在我的解决方案中使用它了。Thanks@al0neevenings用示例更新了答案。这意味着什么回报意味着什么?!!将其参数转换为布尔值
array.length
是int(
Number
,严格来说),但您可能不需要知道错误的确切数量,只需要知道是否有错误。这是不必要的,但它给出了这里发生的事情的暗示。