偶无法理解的怪问题?(关于表单)

net205 2006-07-11 03:28:22
刚才测试程序时碰到这样的怪问题
<script>
function checkForm(formName)
{
try
{
alert(document.forms(formName).name);
var childelement= document.forms(formName).elements;
alert(childelement);
}
catch(err)
{
alert(err)
return false;
}
}
</script>
<form name="AddForm" action="" method="post" onSubmit="return checkForm(this.name)">
<input id="id" name="id" value="" size=20 maxlength="4" ><br>
<input id="name" name="name" value="" size=20 maxlength="50" ><br>
<input type="submit" value=" 保 存 " name="submit" ><br>
</form>

问题出现在表单里有个名为name的input,我开始以为name是js的保留字,可查了文档,name不是保留字,我还试了用js的保留字测试了去是正常的(case,do,break)

糊涂了,,望知情给个解释?????
...全文
109 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2006-07-11
  • 打赏
  • 举报
回复
由于你的表单里有
<input id="name" name="name" value="" size=20 maxlength="50" >
所以onSubmit="return checkForm(this.name)"中的this.name就是这个input
你只有在更名后才能传递form的name,比如
<input id="name1" name="name1" value="" size=20 maxlength="50" >

注意js操控表单时都是表单元素优先的,对于
<input type="submit" value=" 保 存 " name="submit" >
在用js执行submit()时就会出现“对象不支持此属性或方法”的错误,因为提交按钮的名字被命名为submit了
net205 2006-07-11
  • 打赏
  • 举报
回复
结账
net205 2006-07-11
  • 打赏
  • 举报
回复
一点就开窍了,,应该就是这原因,刚才试了this.id,也一样
ranranhu 2006-07-11
  • 打赏
  • 举报
回复
en,这里 的name和input 的 id 冲突了
要么改了input的id,要么直接调用form对象
fason 2006-07-11
  • 打赏
  • 举报
回复
这里this.name返回的是input,这种情况下你这样调用比较好return checkForm(this), 直接用form对象

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧