以下函数的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}}
答案 0 :(得分:7)
使用:if (document.getElementById("username").value.length)
等。换句话说,您需要该字段的value
。
如果!=0
value.length === 0
评估为value.length
(false
)
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事件或模糊事件。