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; 返回假;

我收到此错误消息:

未捕获的类型错误无法读取未定义的属性“名字”

如果我写而不是这一行上方的行

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);

    }

我不知道您到底面临什么问题,所以我附上了代码的完整工作范围,并在 chrome 和 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 回答