if语句永远不会在此代码中工作

时间:2012-04-23 12:45:18

标签: javascript html

以下函数的if语句永远不会执行,即使我已经填充了text-field和  密码字段。 alert函数在if语句之前正常工作,但alert函数在<script type="text/javascript"> function CheckForMissingFields() { alert("before if statement"); if(document.getElementById("username").length != 0 && document.getElementById("password").length != 0) { document.getElementByName("SignInButton").disabled = 'false'; alert("inside if statement"); } alert("outside if statement"); } 之后正常工作 如果陈述永远不会奏效。

这是功能:

SignIn

最初禁用按钮if的状态。我希望在完成两个字段时启用它。 <ul> <form method="post" action="#"> <li> <input type="text" id="username" value="Username or Email" size="25" name="UserID" onfocus="emptyTextField()" /> </li> <li> <input type="password" id="password" value="password" size="25" name="UserPassword" onfocus="emptyPasswordField()" /> <center><input type="submit" value="sign-in" style="font-size:20px" name="SignInButton" disabled="true"/> </center> </li> </form> </ul> 语句永远不起作用的原因是什么?

以下是相应的HTML登录代码段:

{{1}}

5 个答案:

答案 0 :(得分:7)

使用:if (document.getElementById("username").value.length)等。换句话说,您需要该字段的value

如果!=0 value.length === 0评估为value.lengthfalse

,则无需falsy

在检查值长度之前,您可能需要trim值,所以:

if (document.getElementById("username").value.replace(/^\s+|\s+$/,'').length)

答案 1 :(得分:3)

getElementById产生一个DOM节点。在您的情况下输入字段。它没有length属性,但value属性。

答案 2 :(得分:3)

您正在尝试获取html标记的长度。我想你想要获取输入字段的内容。

像这样:

if(document.getElementById("username").value.length != 0 && 
    document.getElementById("password").value.length != 0)

这回答了原来的问题。然后,如果你想要一个空格被认为是空的,你应该在获取字符串的长度之前使用一个修剪空格的函数(比如jQuery.trim)。

答案 3 :(得分:1)

怎么样

function trim(stringToTrim) {
    return stringToTrim.replace(/^\s+|\s+$/g,"");
}

只需创建上面的函数,修剪字符串中的空格,然后替换你的if条件,如下所示将为你工作..

    if(trim(document.getElementById("username").value) != "" && 
       trim(document.getElementById("password").value) != "") 

答案 4 :(得分:0)

我很困惑:你在哪里打电话给你

CheckForMissingFields()

功能来自?如果你不打电话,你永远不会看到if语句有效。此外,每次文本框更改时都需要重新评估,因此请尝试将该函数绑定到change事件或模糊事件。