返回false如果值不是数字

时间:2016-09-14 12:59:19

标签: jquery

以下是我创建的表单的验证。我在提交第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;
}

1 个答案:

答案 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。