繁体   English   中英

有人可以解释为什么我的功能不起作用吗?

[英]Could someone explain why my functions are not working?

所以我对JavaScriptJavaScript ,我正在尝试一个非常简单的输入文本并检查它。 它似乎不像我想要的那样工作。 我希望所有输入都通过checkInputs 在所有这些都是 100% 之后,我希望它检查hoursWorkedhorlyRate是否是大于 0 的数字。它似乎只是转到checkNumberValidation而不检查是否已填充所有输入。

我有:

    function checkNumbersValidation(field){
        if( isNaN(field) ) {
            field.value = "Must be a number";
            field.focus("");
        }
    }

    function checkInputs(field) {
        var test = false;
        do{
            if ( field.value === null || field.value.trim() === "" ) {
                field.value = "Input needed";
                //set focus
                field.focus("");
            }else if (field.value === "0") {
                field.value = "Can't be zero";
                field.focus("");
            }else {
                tests = true;
            }
        }while (test = false)
    }
    function handelCalcButtonClicked (e) {
        var passFirstTests = false;

        var textFields = ["fullName", "hoursWorked", "hourlyRate"];

        for( var i = 0; i < textFields.length; i ++ ) {
            var field = document.getElementById(textFields[i]);
            checkInputs(field);
        }

        if( **something** ) {

            var numberFields = ["hoursWorked", "hourlyRate"]

            for ( var i = 0; i < numberFields.length; i++ ) {
                field = document.getElementById(numberFields[i]);

                checkNumbersValidation(field);
            }
        }
    }

    document.addEventListener("DOMContentLoaded", function() {
    document.getElementById("calcButton").addEventListener("click", handelCalcButtonClicked, false);
    });

显然我不知道我在做什么。 在函数handelCalcButtonClicked我不确定如何继续下一部分(Saying something 部分)。 你能帮忙的话,我会很高兴!

那这个呢:

function checkNumbersValidation(field) {
    if (isNaN(field)) {
        field.value = "Must be a number";
        field.focus("");
    }
}

function checkInputs(field) {
    if (!field.value || !field.value.trim()) {
        field.value = "Input needed";
        field.focus("");
        return;
    if (field.value === "0") {
        field.value = "Can't be zero";
        field.focus("");
    }
}

function handelCalcButtonClicked (e) {
    var textFields = ["fullName", "hoursWorked", "hourlyRate"],
        numberFields = [          "hoursWorked", "hourlyRate"],
        i,
        field;

    for (i = 0; i < textFields.length; i++) {
        field = document.getElementById(textFields[i]);
        checkInputs(field);
    }

    for (i = 0; i < numberFields.length; i++) {
        field = document.getElementById(numberFields[i]);
        checkNumbersValidation(field);
    }
}

document.addEventListener("DOMContentLoaded", function() {
document.getElementById("calcButton").addEventListener("click", handelCalcButtonClicked, false);
});

或者:

function checkInput(field, isnumber) {
    if (!field) return;
    if (isnumber === true && isNaN(field)) {
        field.value = "Must be a number";
        field.focus("");
        return;
    }
    if (field.value === "0") {
        field.value = "Can't be zero";
        field.focus("");
        return;
    }
    if (!field.value || !field.value.trim()) {
        field.value = "Input needed";
        field.focus("");
    }
}

function handelCalcButtonClicked (e) {
    checkInput(document.getElementById('fullName');
    checkInput(document.getElementById('hoursWorked', true);
    checkInput(document.getElementById('hourlyRate', true);
}

document.addEventListener("DOMContentLoaded", function() {
    document.getElementById("calcButton").addEventListener("click", handelCalcButtonClicked, false);
});

在 checkNumbersValidation 中,您需要对 field.value 进行 isNan 调用,而不是字段:

 if( isNaN(field.value) )

如果你想知道你的所有字段是否都通过了 checkInputs 并且都通过了,你需要 checkInputs 来返回每个字段是否已经通过:

function checkInputs(field) {
    if ( field.value === null || field.value.trim() === "" ) {
        field.value = "Input needed";
        //set focus
        field.focus("");
        return false;
    } else if (field.value === "0") {
        field.value = "Can't be zero";
        field.focus("");
        return false;
    }
    return true;
}

这将使您知道是否所有字段都已通过检查:

var passedAllChecks = true;
for( var i = 0; i < textFields.length; i ++ ) {
    var field = document.getElementById(textFields[i]);
    passedAllChecks = checkInputs(field) && passedAllChecks;
}
if(passedAllChecks) {
    /* do number validation stuff */
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM