1

次の関数のifステートメントは、テキスト フィールドとパスワード フィールドの両方に入力しても実行されません。関数はステートメントの前では正常に機能しますが、alertifステートメントの後の関数は機能しません。ifalert

関数は次のとおりです。

<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に評価される場合は必要ありませんfalsefalsy

値の長さを確認する前に、値をトリミングすることをお勧めします。

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

getElementByIdDOMノードを生成します。あなたの場合、入力フィールド。プロパティはありませんが、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()

から機能しますか?それを呼び出さないと、if ステートメントが機能することはありません。また、テキストボックスが変更されるたびに再評価する必要があるため、その関数を change イベントまたは blur イベントにバインドしてみてください。

于 2012-04-23T12:51:49.977 に答える