我有以下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
不起作用?
答案 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>