1

用户的输入必须看起来像“value1,value2,value3,value4...”,并且 value[i]-value[i-1] 必须大于 0.5。最小值为 0,最大值为 100。例如“0,5,10.5,20”即可。我的基本代码是

$('.click').click(function () {
    var flag = true;
    var str = $('input').val();
    var arr = str.split(',');
    if (arr.length > 1) {
        jQuery.each(arr, function (i) {
            if (arr[i] < 0 || arr[i] > 100 || arr[i + 1] - arr[i] < 0.5) {
                flag = false
            }
        });
        if (flag) {
        //main function must never start before we complete that check on all the values
            alert("OK, our function starts now. Your input is " + str)
        } else {
            alert("Please, check your input: " + str)
        }
    }
});  

这似乎可行,但我不确定:也许我错过了一些东西。我的问题是如何强制我的主要功能在数组检查完成之前不启动。是否有机会在检查所有数字之前开始arr?也许没有必要创建那个标志,那么你会怎么做来执行这种验证呢?

4

2 回答 2

1

这是对您所拥有的内容的重写,将主算法拆分为自己的函数,并使用其返回值来显示您的警报。显然我无法测试它,因为我没有你的网页,但运气好的话它应该可以工作......

$(document).ready(function() {
    $('.click').click(function() {
        var str = $('input').val();
        if (inputCheck(str)) {
            //if true
            alert("OK, our function starts now. Your input is " + str);
        } else {
            alert("Please, check your input: " + str);
        }
    });
});

function inputCheck(str) {
    var arr = str.split(','),
        flag = false;
    if (arr.length > 1) {
        jQuery.each(arr, function(i) {
            if (arr[i] < 0 || arr[i] > 100 || arr[i + 1] - arr[i] < 0.5) {
                flag = false;
                return false;
                //exit loops
            } else
                flag = true;
        });
        //end each
    }//end if
    return flag;
}
于 2013-03-06T08:00:01.123 回答
1

我看不出执行路径可以通过任何方式通过检查。但是,您可能也想检查非数值,您可以摆脱该嵌套函数

$('.click').click(function () {
    var str = $('input').val();
    var arr = str.split(',');
    if (arr.length > 1) {
        for(var i=0; i<arr.length; i++) {
            if (arr[i]<0 || arr[i]>100 || arr[i+1]-arr[i]<0.5 || !jQuery.isNumeric(arr[i])) {
                return alert("Please, check your input: " + str);
            }
        }
        main(str);
    }
});

function main(str) { // Just so that this *main function* exists ;)
    alert("OK, our function starts now. Your input is " + str);
}
于 2013-03-06T09:09:16.807 回答