从输入HTML / JS获取价值

时间:2013-05-15 12:10:49

标签: javascript forms validation getelementbyid

我有以下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;返回   假;

我收到此错误消息:

  

未捕获的typeerror无法读取未定义的属性“FirstName”

如果我写而不是此行上方的行

document.getElementById("FirstName").value

效果很好,所以我的问题是为什么document.forms[FormName]["FirstName"].value不起作用?

3 个答案:

答案 0 :(得分:2)

document.forms[FormName]["FirstName"]将尝试访问javascript HTMLFormElement表单对象上的属性。 [Id]语法只能用于集合。要使用ID FirstName访问元素,请使用document.forms[FormName].elements['FirstName'].value

答案 1 :(得分:1)

document.forms[name]返回元素,而不是映射输入名称=&gt;值。这可行:

var Fname = document.forms[FormName].getElementsByTagName('Input')[5].value;
return false;

答案 2 :(得分: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>