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
,严格来说),但您可能不需要知道错误的确切数量,只需要知道是否有错误。这是不必要的,但它给出了这里发生的事情的暗示。