`

[JS] 为表单元素设置name属性的一个'陷阱'

 
阅读更多
一. 背景
      通常, 我们在使用表单时, 会给表单元素设置一个name属性, 这是再正常不过的操作, 但是, 现在我建议你, 最好不要将某个表单元素的name属性值设置为tags.
 
二. 为什么?
因为IE6+, Opera, Webkit中, 对于表单元素的elements对象, 有个名为tags的原生方法, 其作用是通过表单元素的标签名来获取表单元素, 如
var o =oForm.elements.tags('input')[0].
 虽然几大浏览器都支持tags方法, 但对于一个特殊情况, 出现了两种结果: 当某个表单元素的name属性值为tags, oForm.elements.tags是表示的什么呢?
 我们来看两个例子:
 
例一: 表单中不存在name属性值为tags的表单元素
<form name="testForm1" action="" method="post">
<input type="text" />
</form>
<script type="text/javascript">
var oForm = document.getElementById('testForm');
alert(oForm.elements['tags']);
</script>
 FF: 输出undefined
 IE, Opera, Webkit: function tags() {native code}
 
例二: 表单中存在name属性值为tags的表单元素
<form name="testForm1" action="" method="post">
<input type="text" name="tags" />
</form>
<script type="text/javascript">
var oForm = document.getElementById('testForm');
alert(oForm.elements['tags']);
</script>
 IE, FF, Opera: 输出元素引用
 Webkit: function tags() {native code}
 
 
三. 解决方法
1. 避免将name属性值设置为tags;
2. 不使用oForm.elements方式来获取表单元素;
3. 使用oForm.elements.namedItem('tags')方式来获取(推荐), 该方式各浏览器均支持, 且不会出现
oForm.elements['tags']这样的问题.
 
 
四. 参考资源
 
分享到:
评论

相关推荐

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

    由于`$("#formAttribute1")`选择的是一个表单元素,而不是表单中的输入元素,因此获取不到内部元素的name属性值。 接下来,文章中提到了使用`prop`方法,这个方法在获取属性值时与`attr`方法在行为上可能有所不同,...

    JavaScript获取网页表单action属性的方法

    在这个例子中,表单被定义为一个具有id为"frm1"的元素,它的action属性被设置为"jb51.php",这意味着当表单提交时,数据将被发送到jb51.php这个URL。在用户填写表单后点击提交按钮,浏览器会根据action属性指定的...

    表单中有name为action的元素时,取form的属性action杯具了

    然而,如果在表单内部存在一个名为`action`的输入元素(例如`&lt;input&gt;`或`&lt;button&gt;`),这可能会引发一些意外的行为,正如标题“表单中有name为action的元素时,取form的属性action杯具了”所描述的问题。 当我们...

    表单及表单元素

    当用户点击“表单属性”按钮时,触发`getFormPro()`函数,该函数通过`window.open()`打开一个新的窗口,并输出表单的属性值,实现了对表单属性的动态展示。 #### 六、总结 表单及其元素是Web应用中不可或缺的部分...

    HTML5新增属性与表单元素

    这允许开发者能够通过简单的属性设置,将页面上的元素迅速转变为可编辑状态,用于实现富文本编辑器等应用。 #### 1.3 hidden属性 `hidden`属性在HTML5中用于隐藏页面元素。它是一个布尔属性,当元素上设置了`hidden...

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

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

    Dreamweaver CS6设置表单元素的属性2.pdf

    本文主要围绕如何在Dreamweaver CS6中设置表单元素的属性,特别是复选框、选择(列表/菜单)对象以及跳转菜单,这些元素在构建网页交互功能时起着至关重要的作用。 1. **复选框** 复选框是表单中常见的元素,常...

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

    在JavaScript中,我们通常通过`document.getElementById('elementId')`获取元素,然后使用`value`属性获取或设置其值。验证时,可以检查输入是否为空、是否符合特定格式(如邮箱格式)等。 2. **单选按钮** (input ...

    Dreamweaver CS6设置表单元素的属性1.pdf

    单选按钮组的属性设置与单选按钮基本一致,主要包括名称、值和布局方式。 总的来说,Dreamweaver CS6提供了一套完善的工具来设置表单元素的属性,从而使得网页表单更加灵活、功能强大,能够满足各种用户交互需求。...

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

    为了进一步提高兼容性和灵活性,建议为具有相同`name`属性的元素设置唯一的`id`属性,这样即使是在动态生成表单的情况下,也能够确保每个元素都能正确地进行验证。 ### 结论 通过对jQuery Validate插件的`$....

    动态添加删除表单元素

    2. 添加属性和事件:创建元素后,可以使用`element.setAttribute('name', 'dynamicInput')`来设置其他属性,如name。同时,还可以为元素添加事件监听器,比如`element.addEventListener('keyup', function() {...})`...

    jquery获取form表单input元素值的简单实例

    例如,如果有一个input元素的id属性为cifNo,则可以使用$("#cifNo").val()来获取这个input元素的值。这个方法返回的是input元素当前的值,如果是文本类型input,那么返回的就是文本框内用户输入的文本。值得注意的是...

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

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

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

    1. 表单元素:HTML中的标签定义了一个表单,其中可以包含各种表单控件,如(输入框)、(下拉框)、(多行文本框)等。 2. 表单属性:如action(提交表单的URL)、method(提交方式,GET或POST)等,控制表单的行为...

    js中获取jsp表单中radio类型的值简单实例

    单选按钮允许用户在一组选项中选择一个值,它通常使用`&lt;input type="radio"&gt;`标签来创建,并且具有相同`name`属性的多个单选按钮共同构成一个选择组,这样可以保证用户只能选择其中一个选项。 在JSP页面中创建单选...

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

    泛微OA开发技巧作业流程表单HTML扩展开发...本文档详细介绍了泛微OA开发技巧作业流程表单HTML扩展开发推荐设计器实现设置表单元素的长度的概念、优点、实现方法、应用场景和常见问题,为开发者提供了一个详细的指南。

    HTML5中form表单的新增属性.ppt

    HTML5中form表单的新增属性.ppt

    表单及表单元素的应用(jsp).rar

    重定向会创建一个新的请求,而转发是在当前请求上下文中进行。 七、表单处理的错误处理 在实际应用中,错误处理是必不可少的。当用户输入不符合预期时,应提供清晰的错误提示。这可以通过设置请求属性并在JSP页面上...

    JavaScript表单属性判断以及存取(真实开发使用的js)

    2. `document.getElementsByName(name)`: 通过元素的name属性获取,返回的是一个NodeList集合,如`var inputs = document.getElementsByName('inputName')`。 3. `document.getElementsByTagName(tagName)`: 通过...

    javascript弹出层表单提交代码

    这包括创建`&lt;form&gt;`标签,添加输入字段(如`&lt;input&gt;`、`&lt;textarea&gt;`),以及设置表单的属性(如`name`、`id`)。通过JavaScript的`document.createElement()`、`appendChild()`和`innerHTML`等方法,可以实现这些...

Global site tag (gtag.js) - Google Analytics