`
mzhj
  • 浏览: 224775 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JS对IE下表单元素name和id不同步的取值异常BUG03/08/2009

阅读更多

JS对IE下表单元素name和id不同步的取值异常BUG03/08/2009

随着小生与IE的交往越来越深入,这个并不陌生的老朋友的坏脾气也一天一天的被挖掘出来,尽管她试图遮遮掩掩,蒙混过关……
这次的bug出在一个表单验证上,我用javascript对用户的输入进行客户端验证,由于需要在之前已经完工的表单上加入一个新的元素来显示一些额外信息,意外的,我将这个元素的id取了一个和之前已经存在的表单元素的name相同的名字,我的表单验证使用document.forms['form_name'].elements['element_name']来定位元素,因此未给之前的任何元素id属性。呼呼!bug就这样出现了,当我们验证之前元素的checkd属性时,总是返回undefined,这实在太奇怪了!我们将其与SVN中的上个版本比较,发现只是增加了一个元素,回溯到上个版本,一切正常,问题就在这个元素上了,我们去除了这个新增元素的id属性,表单验证的js代码又能工作了。
     今天,我仔细研究了一下这个问题,发现:只要表单元素的id和name值不同,即会引发javascript取元素不准确的bug,最后我还发现form.elements['element_name']取表单元素如果id和name相同的值却指向不同的元素,该方法居然只能返回undefined,不管在ie还是firefox、opera下。
     看我做的一个示例来重现这个bug吧,我故意将第一个元素的id和第二个元素的name值设为相同,第二个元素的name等于第一个元素的id,而第三、四两个元素的设置是正常的,接着使用了三种方法:getElementById、getElementsByName、elements来获得value,结果在ie6、ie7下,无论是使用getElementById还是getElementsByName都不能取到第二个元素(文本框)的value,在ff、opera下却都能正常工作。

分享到:
评论

相关推荐

    JavaScript获取表单内所有元素值的方法

    本文实例讲述了JavaScript获取表单内所有元素值的方法。分享给大家供大家参考。具体如下: 下面的JS代码可以遍历指定表单中的所有元素,并输出元素的值 <!DOCTYPE html> <html> <body> <form id=...

    jquery表单元素取值

    jquery表单元素取值 很实用 强大

    按回车键时跳到下一个表单元素的javascript代码

    按回车键时跳到下一个表单元素的javascript代码 <br>函数说明:按回车键时跳到下一个表单元素 JumpToNextElement() 用于按回车键时跳到下一个表单元素(统一处理按回车键的问题) 在页面调用: <script ...

    使用jQuery时Form表单元素ID和name命名大忌

    在做自己的毕业设计的时候将自己的表单元素ID和name命名为了nodeName: 代码如下: <form> <input type=”text” name=”nodeName” id=”nodeName”> ……….. </form> 在chrome浏览器下可以看到...

    form表单复选框取值

    js调用时使用form表单进行对选中复选框的内容取值

    js获取form表单中name属性的值

    今天小编就为大家分享一篇关于js获取form表单中name属性的值,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    JS验证页面form表单数据,齐全

    script language="JavaScript" type="text/javascript" src="JS/validate.js"></script> 在form表单上添加一个提交事件调用验证数据方法 <form name="listform" action="resume-doAdd" method="post" onsubmit=...

    JQuery表单元素取值赋值方法总结

    <h2>jQuery 表单元素取值与赋值方法总结</h2> <input type="text" class="test1"/> <input type="button" value="赋值" onclick="get()"/> <input type="text" class="test2"/> [removed] ...

    js验证表单 js验证表单

    js表单验证控制代码大全 /* 目录: 1:js 字符串长度限制、判断字符长度 、js限制输入、限制不能输入、textarea 长度限制 2.:js判断汉字、判断是否汉字 、只能输入汉字 3:js判断是否输入英文、只能输入英文 4:js只能...

    通达OAV11.10版本,表单js开发

    通达OAV11.10版本,表单js开发 1、向手机端表单,新增自定义的html元素 2、向表单中,引入自定义样式和js。当前用的时layui 3、对表单中的控件,绑定事件,并同时在电脑端、OA精灵端、手机端同时生效。 4、...

    WEB开发 之 HTML5 表单元素.docx

    本文将介绍三个新的表单元素:datalist、keygen 和 output。 datalist 元素 datalist 元素规定输入域的选项列表。列表是通过 datalist 内的 option 元素创建的。要把 datalist 绑定到输入域,请用输入域的 list ...

    通用JS表单验证

    使用时请将下面的javascript代码存到一个单一的js文件中。 1、表单要求 <form name="formname" onSubmit="return validateForm(this)"></form> 将对表单中的所有以下类型的域依次验证,所有验证是去除了前导和后缀...

    JS表单及表单元素操作实验.

    (1)使用脚本编写工具或常用网页制作工具,设计合适的网页界面,编写...(2)脚本编写应符合JavaScript代码规范,有适当的缩进和注释、标识符的命名。通过在Chrome中预览不存在任何脚本错误; (3)认真撰写实训报告。

    前端与移动开发之表单

    for属性是必须的 且for属性值必须是绑定表单元素的id的属性值 id属性值可以自定义 但不能重复 即全局唯一 (2)下拉表单元素 <select name="" id=""> <option value=""></option> ...

    JavaScript访问表单及表单元素.pdf

    JavaScript访问表单及表单元素.pdf 学习资料 复习资料 教学资源

    关于jquery.validate.js 相同name的多个元素只能验证第一个元素的解决办法

    由于jquery.validate.js只针对元素name做了验证而没有针对元素ID进行验证,所以在使用jquery.validate插件http://jqueryvalidation.org/,当节点的name相同时候,脚本特意忽略剩余节点,导致所有相关节点的errMsg都...

    泛微OA开发技巧作业流程表单HTML扩展开发推荐设计器实现设置表单元素的长度.docx

    * JavaScript脚本设置:可以使用JavaScript脚本设置表单元素的长度。 四、泛微OA开发技巧作业流程表单HTML扩展开发推荐设计器实现设置表单元素的长度的应用场景 泛微OA开发技巧作业流程表单HTML扩展开发推荐设计器...

    JavaScript验证注册表单(包含多种表单元素)

    一个注册表单(文本框、单选按钮、复选框、下拉列表、文本域……) JavaScript验证

    js 使FORM表单的所有元素不可编辑的示例代码

    代码如下: //使页面不可... //部分元素可以编号 element.name 是元素自定义 name if (element.name != “auditEntity.auditContent” && element.name != “auditEntity.auditAutograph” && element.name != “auditE

    原生js form表单美化插件表单元素input select下拉框

    原生js form表单美化插件表单元素input select下拉框

Global site tag (gtag.js) - Google Analytics