简体   繁体   English

JavaScript一条语句不起作用

[英]JavaScript one Statement not Working

I am having trouble with the gender check. 我在性别检查方面遇到麻烦。 No matter what I do it always registers true unless I only have it check for one condition. 不管我做什么,除非我仅检查一个条件,否则它始终会记录为真。 IE: If I enter m or f it does not register. IE:如果输入m或f,则不会注册。 But if I write a condition only checking for the letter m it will work. 但是,如果我只写一个条件来检查字母m,它将起作用。

function Validate()
{
    var name= document.getElementById('name').value;
    var age= document.getElementById('age').value;
    var sex= document.getElementById('sex').value;
    var error ="";
    var check = 0;

    if(name=="")
    {
        check=1;
        error= error +" Please enter a valid name \n";
    }

    if(age>100 || age<1) 
    {
        check=1;
        error= error +" Please enter a valid age \n";
    }

    if(sex != "f" || sex !="m")
    {
        check=1;
        error= error +" Please enter a valid sex \n";
    }

    if (check>0)
    {
        alert(error); 
        check=0;
        return false;
    }
}

HTML: HTML:

<form action="cartoon.html" method="post" onsubmit="return Validate()">
    <br>
        Name
        <input type="text" placeholder="last name" id="name"/>
        <input type="text" placeholder="first name" id="name"/>
        <input type="text" placeholder="middle initial"/>
    </br>
    <br>
        Age
        <input type="number" placeholder="Age" id="age"/>
    </br>

    <br>
        sex
        <input type="text" placeholder="Sex" id="sex"/>
    </br>

    <input type="submit" value="login"/>
</form>

尝试:

 if(sex != "f" && sex !="m")
if(sex != "f" || sex !="m"){
            check=1;
            error= error +" Please enter a valid sex \n";

            }

If sex is F first part is false but second is true because sex is not M -> statement is true -> error 如果sex为F,则第一部分为false,但第二部分为true,因为sex不是M->语句为true->错误

Same goes for M input. M输入也一样。

you need to make this change: 您需要进行以下更改:

if(sex != "f" && sex !="m"){
            check=1;
            error= error +" Please enter a valid sex \n";

            }

It is a boolean logic error 这是布尔逻辑错误

More complex variant 更复杂的变体

if (!(sex == 'm' || sex == 'f')) {
    check = 1;
    error= error + " Please enter a valid sex \n";
}

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

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