0

次のhtmlコードがあります:

<form name="Register" action="Register.aspx" method="post" runat="server" style="margin-top: 15px;" onsubmit="return validateProfile(FormName='Register');" >
 <p>
 Name* : <input id="FirstName" type="text" name="FirstName"/> </p>
 <input type="submit">
</form>

そして、この JS コード:

function isEmpty(field) {
    return (field == "" || field == null)
}

function validateProfile(FormName) {
    var Fname = document.forms[FormName]["FirstName"].value; return false;
    var g = (isEmpty(field));
    alert(g);

}

問題は次の行にあります。

var Fname = document.forms[FormName]["FirstName"].value; false を返します。

次のエラー メッセージが表示されます。

キャッチされていない typeerror は、未定義のプロパティ 'FirstName' を読み取ることができません

この行の上の行の代わりに書くと

document.getElementById("FirstName").value

それはうまく機能するので、私の質問はなぜdocument.forms[FormName]["FirstName"].value機能しないのですか?

4

3 に答える 3

2

document.forms[FormName]["FirstName"]javascript HTMLFormElement フォーム オブジェクトのプロパティにアクセスしようとします。[Id] 構文は、コレクションでのみ使用できます。ID FirstName を使用して要素にアクセスするにはdocument.forms[FormName].elements['FirstName'].value

于 2013-05-15T12:18:56.033 に答える
1

document.forms[name]マッピング入力名 => 値ではなく、要素を返します。これはうまくいくでしょう:

var Fname = document.forms[FormName].getElementsByTagName('Input')[5].value;
return false;
于 2013-05-15T12:15:35.490 に答える
1

検証機能に問題があります

なんで使ってるのかわからない

        return false;

     var Fname = document.forms[FormName]["FirstName"].value;

これを試して

    function validateProfile(FormName) {
        var Fname = document.forms[FormName]["FirstName"].value; 
        var g = (isEmpty(Fname));
        alert(g);

    }

あなたが直面している問題が正確にわからないので、コードの完全な動作コードを添付し、以下のようにクロムとIEでテストしました

    <!DOCTYPE html>
    <html>
    <body>

    <form name="Register" action="Register.aspx" method="post" runat="server" style="margin-top: 15px;" onsubmit="return validateProfile('Register');" >
     <p>
     Name* : <input id="FirstName" type="text" name="FirstName"/> </p>
     <input type="submit">
    </form>

    <script language="javascript">


    document.write(document.forms[0].name);

    function isEmpty(field) {
        return (field == "" || field == null)
    }

    function validateProfile(formname) {
        var Fname = document.forms[formname]["FirstName"].value; 
        var g = (isEmpty(Fname ));
        alert(g);
    return false;

    }

    </script>

    </body>
    </html>
于 2013-05-15T12:19:38.833 に答える