1

if即使我同时填写了文本字段和密码字段,以下函数的语句也不会执行。该alert函数在语句之前工作正常,ifalertif 语句之后的函数永远无法工作。

这是功能:

<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声明永远不起作用的原因可能是什么?

以下是相应的 HTML 登录片段:

<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>
4

5 回答 5

7

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

!=0顺便说一句,如果value.length === 0 value.length将评估为false( falsy) ,则不需要

在检查值长度之前,您可能需要修剪值,因此:

if (document.getElementById("username").value.replace(/^\s+|\s+$/,'').length)
于 2012-04-23T12:48:03.350 回答
3

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

于 2012-04-23T12:47:52.007 回答
3

您正在尝试获取 html 标签的长度。我认为您想获取输入字段的内容。

像这样:

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

这回答了最初的问题。然后,如果您希望将空格视为无,则应jQuery.trim在获取字符串长度之前使用修剪空格的函数(如 )。

于 2012-04-23T12:48:21.943 回答
1

怎么样

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

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

    if(trim(document.getElementById("username").value) != "" && 
       trim(document.getElementById("password").value) != "") 
于 2012-04-23T12:47:34.567 回答
0

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

CheckForMissingFields()

function from? If you don't call that, you never will see the if statement work. Also, you'll need to re-evaluate each time the textboxes change, so try binding that function to the change event or blur event.

于 2012-04-23T12:51:49.977 回答