以下是我创建的表单的验证。我在提交第2步时包含了函数step_2_validation()。
如果输入包含字符串,函数会正确发现,但表单不会因返回false而中断;声明。我在这里缺少什么?
// Check mileage does not contain text
var mileageInputs = $('.form__item.labelled input[type="text"]')
var mileageArray = $.map(mileageInputs, function(value, index) {
return [value];
});
var stringArray = [];
for(var i=0;i<mileageArray.length;i++){
var thisValue = mileageArray[i].value;
var thisValue = thisValue.replace(/\,/g,''); // remove commas added during input
if ( $.isNumeric(thisValue) == false && thisValue != '' ) {
stringArray.push(thisValue);
}
}
if ( stringArray.length > 0 ) {
alert('This should stop the form... it does not');
return false;
}
答案 0 :(得分:1)
问题是,你所拥有的return false
只是暂停了每一个的执行,它不会从你的外部函数step_2_validation
返回false。
一种选择是恢复使用好的ol&#39; for(...)
循环,当点击return false
时 将返回外部函数。
for(var i=0;i<mileageArray.length;i++){
var thisValue = mileageArray[i];;
thisValue = thisValue.replace(/\,/g,''); // remove commas added during input
if ( $.isNumeric(thisValue) == false ) {
return false;
}
}
请注意,在return true
循环之后,您几乎肯定需要for(..)
,否则函数的返回值将始终为false。