Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript只验证我的第一个输入_Javascript - Fatal编程技术网

Javascript只验证我的第一个输入

Javascript只验证我的第一个输入,javascript,Javascript,我是Javascript新手,我正在尝试验证我的表单,但出于某些原因,我的代码只考虑第一次输入 如果我尝试插入一个1个字符的输入名称,它会给出正确的警报框,但是如果我插入一个1个字符的输入姓氏,它不会显示相同的警报框 我看不出我的错误…为什么它只处理第一次输入?有人能帮我吗 HTML <form action="registration" name="registrationForm" method="post" onsubmit="return formValidation();">

我是Javascript新手,我正在尝试验证我的表单,但出于某些原因,我的代码只考虑第一次输入

如果我尝试插入一个1个字符的输入名称,它会给出正确的警报框,但是如果我插入一个1个字符的输入姓氏,它不会显示相同的警报框

我看不出我的错误…为什么它只处理第一次输入?有人能帮我吗

HTML

<form action="registration" name="registrationForm" method="post" onsubmit="return formValidation();">
    <p> Nome <p>
    <input type="text" class="registrationInput" name="nome" placeholder="Nome" required maxlength="45"/>
    <p> Cognome </p>
    <input type="text" class="registrationInput" name="cognome" placeholder="Cognome" required maxlength="45"/>
</form>

Nome
同源的

JAVASCRIPT

function formValidation(){

    var name = document.registrationForm.nome;
    var surname = document.registrationForm.cognome;

    if(validateName(name)){
        if(validateSurname(surname)) {
        }
    }
    return false;
}

function validateName(name){
    if(name.value.length <= 3 || name.value.length >=45) {
        window.alert("Il nome non è corretto. Deve essere lungo da un minimo di 4 a un massimo di 45 caratteri");
        name.focus();
        return false;
    }
    return true;
}

function validateSurname(surname) {
    if(surname.value.length <= 3 || surname.value.length >=45) {
        window.alert("Il cognome non è corretto. Deve essere lungo da un minimo di 4 a un massimo di 45 caratteri");
        surname.focus();
        return false;
    }
    return true;
}
函数formValidation(){
变量名称=document.registrationForm.nome;
var姓氏=document.registrationForm.cognome;
if(验证名称(名称)){
如果(验证用户名(姓氏)){
}
}
返回false;
}
函数validateName(名称){
如果(name.value.length=45){
窗口警报(“45克拉地块上的4号地块上的非科雷托开发区”);
name.focus();
返回false;
}
返回true;
}
函数validateSurname(姓氏){
如果(姓氏.value.length=45){
窗口警报(“45克拉地形的4号公路上的非科雷托开发区”);
姓focus();
返回false;
}
返回true;
}

验证正常时,函数formValidation()不返回任何内容

在验证UrName if之前,需要返回true

...
if(validateName(name)){
    if(validateSurname(surname)) {
        return true;  // <-- YOU NEED TO ADD THIS
    }
}
return false;
...
。。。
if(验证名称(名称)){
如果(验证用户名(姓氏)){
返回true;//
当且仅当
validateName
返回
true
时,
validateSurname
才会运行。如果始终无条件地希望验证两者,则不能有条件地嵌套它们:

var valName = validateName(name),
    valSurname = validateName(surname);

return valName && valSurname;
问题就在这里

if(validateName(name)){
    if(validateSurname(surname)) {
    }
}
错误在于,如果第一个函数调用validateName(name)返回false,第二个调用将被忽略。可能您必须检查分隔的输入

if(validateName(name)){

}

if(validateSurname(surname)) {
}
阅读评论后更新

很容易知道哪些输入失败

var flag = true;

if(!(validateName(name) && flag)){
    flag = false;
    alert("Input 1 fails");
}


if(!(validateSurname(surname) && flag)){
    flag = false;
    alert("Input 2 fails");
}

您尝试验证字段的操作非常不充分。我建议您尝试以下操作:

    function formValidation(){
        var nome = document.getElementsByName('nome')[0];
        var cognome = document.getElementsByName('cognome')[0];

        if(!validateInput(nome)){
            //input nome validation is false
            alert("Il nome non è corretto. Deve essere lungo da un minimo di 4 a un massimo di 45 caratteri");
            nome.focus();
            return;
        }

        if(!validateInput(cognome)){
            //input cognome validation is false
            alert("Il cognome non è corretto. Deve essere lungo da un minimo di 4 a un massimo di 45 caratteri");
            cognome.focus();
            return;
        }
    }

    function validateInput(input){
        //input parameter MUST be a DOM Element

        var input_name = input.getAttribute("name");

        //Validation of "nome" input
        if(input_name == "nome"){

            //Minimum length is 4 and maximum length is 45
            if(input.value.length > 3 && input.value.length < 46){
                return true; //This will break execution and return true
            }
        }

        //Validation of "cognome" input
        else if(input_name == "cognome"){

            //Minimum length is 4 and maximum length is 45
            if(input.value.length > 3 && input.value.length < 46) {
                return true; //This will break execution and return true
            }

            //This input validation is exactly the same as
            //nome input validation, so you should ommit the
            //code duplication and use the same validation for
            //both fields.
        }

        //Add more field validations if needed...
        //. . .

        //If the input passed as a parameter doesn't pass the validation
        //this function will return false.
        return false;
    }

因为它只会在第一个框通过时验证第二个框…!?因为你将它嵌套在一个
if
中…?它只会验证第一个框,伙计,即使第二个框是错的。不要粗鲁地读问题。正如我说的:如果第一个框是错的,第二个永远不会被验证。当第一个框是错的时候,它会验证第二个框吗ect(它应该)?不,不应该。但这不是我要求的。请看下面的正确答案:)谢谢,我肯定已经尝试过了…但我没有。它有效,谢谢你的时间:-)是的,但我想要这种行为。如果我在表单中插入错误的输入,我希望看到一个提示,显示我所做的第一个错误。在你的示例中,如果我设置了错误的输入ts,我必须同时显示不同的警报,一个警报代表我所有的错误。这有点强调:为什么不单独检查它们?您只想显示输入验证的第一个错误?不,我想显示单击“提交”时完成的第一个错误。这里有两种输入形式:input1和input2。input1:不正确,input2:正确-->提交-->警报(input1不正确)input1:正确,input2:不正确-->提交-->警报(input2不正确)input1:不正确,input2:不正确-->提交-->警报(input1不正确)抱歉格式错误:-(我真的很喜欢你的风格!我想我会使用你的建议,因为它对我来说似乎更好。谢谢,我没有考虑到旗帜的简单性。我有很多东西要学^ ^我很感谢你为我花费的时间,但没有必要把事情复杂化。这只是一个简单的例子,可以更好地理解javascript funct的返回值当然,在我的代码中,我会改进自己,还会看到一些jQuery表单验证。非常感谢:)
    function formValidation(){
        var nome = document.getElementsByName('nome')[0];
        var cognome = document.getElementsByName('cognome')[0];

        if(!validateInput(nome)){
            //input nome validation is false
            alert("Il nome non è corretto. Deve essere lungo da un minimo di 4 a un massimo di 45 caratteri");
            nome.focus();
            return;
        }

        if(!validateInput(cognome)){
            //input cognome validation is false
            alert("Il cognome non è corretto. Deve essere lungo da un minimo di 4 a un massimo di 45 caratteri");
            cognome.focus();
            return;
        }
    }

    function validateInput(input){
        //input parameter MUST be a DOM Element

        var input_name = input.getAttribute("name");

        //Validation of "nome" input
        if(input_name == "nome"){

            //Minimum length is 4 and maximum length is 45
            if(input.value.length > 3 && input.value.length < 46){
                return true; //This will break execution and return true
            }
        }

        //Validation of "cognome" input
        else if(input_name == "cognome"){

            //Minimum length is 4 and maximum length is 45
            if(input.value.length > 3 && input.value.length < 46) {
                return true; //This will break execution and return true
            }

            //This input validation is exactly the same as
            //nome input validation, so you should ommit the
            //code duplication and use the same validation for
            //both fields.
        }

        //Add more field validations if needed...
        //. . .

        //If the input passed as a parameter doesn't pass the validation
        //this function will return false.
        return false;
    }
function formValidation(){

    var passedvalidation = true;

    //Iterate on all registration inputs
    $(".registrationInput").each(function(){
        var input = $(this); //Get the input object
        var input_name = $(input).attr("name"); //Get the input name

        if(input_name == "nome"){
            //Validate "nome" input
            //If validation is false show message, change input color, etc...
            passedvalidation = false;
        }

        else if(input_name == "cognome"){
            //Validate "cognome" input

            //If validation is false show message, change input color, etc...
            passedvalidation = false;
        }
    });

    return passedvalidation;
}

//Call form validation function and that's all
if(formValidation()){
   //send post to process the form
}