`
jianguang_qq
  • 浏览: 91822 次
  • 性别: Icon_minigender_1
  • 来自: 深圳南山
社区版块
存档分类
最新评论

表单元素命名需要注意的一个地方:不要使用与form属性同名的name或id

阅读更多

最近做官方点充值入口的时候遇到个奇怪的问题。

直接上代码: 点击按钮“ JS 提交”报错。

记得以前也遇到过这样的问题,当时的做法是一条路走不通,换一条路,比如用js将表单转换成url参数来传递,换一中方法,解决问题就好,没有去“挖”一下其中的原因,而是将问题归结于浏览器本身的bug和js的诡异性。其实轻只有去“挖”一下就能找到其中的原因,避免以后再犯。

 

看代码: 结果: 狂汗~~~~~~~~~~~~

原因已经很明显了,document.myForm.submit获取到的是<input type="submit" name="submit" id="submit" value="提交" />这个元素,而不是from的submit函数。

由此我们需要注意了,不要给表单的元素取name="submit"或者id="submit"。否则就会出现form.submit()函数不可用!

同样道理,请注意最好不要使用method,action等与form属性同名的name或id。

 

在此感谢tenfy 协助解决问题!

2
0
分享到:
评论

相关推荐

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

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

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

    1. 避免使用JavaScript或jQuery预定义的属性或方法名作为ID或name,如"toLowerCase"、"value"等。 2. 避免使用可能与HTML元素或标签同名的属性,比如"input"、"button"或"select"等,因为它们可能会在某些情况下被误...

    HTML或JSP中多个同名表单元素值的获取

    当我们在一个页面上需要处理多个同名的表单元素时,如何有效地获取它们的值是一个重要的知识点。本篇文章将深入探讨这个主题,并提供相关的实践方法。 在HTML中,表单元素通常通过`&lt;form&gt;`标签定义,而同名的表单...

    解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题

    有时我们会在表单中遇到多个name属性值相同的input标签,尤其是在使用循环结构动态生成表单元素时。这种情况会导致后端PHP脚本无法正确获取所有的表单数据,因为PHP的全局数组$_POST或$_GET仅能接收一个name对应一个...

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

    然而,在使用该插件时,可能会遇到一个问题:当表单中存在多个具有相同`name`属性的元素时,jQuery Validate插件默认只会对这些元素中的第一个进行验证,并且所有的验证错误信息都会显示在这个元素上。这种行为不仅...

    js函数名与form表单元素同名冲突的问题

    在使用原生JavaScript进行DOM操作时,如果一个JavaScript函数与form表单中的某个元素(如input、button等)的id同名,就会出现命名冲突的问题。当页面加载时,由于JavaScript的执行顺序,可能会造成函数被误认为是...

    javascript获取form里的表单元素的示例代码

    此外,如果页面上有多个同名的表单元素,那么直接使用`document.getElementById`可能只能获取到第一个匹配的元素,此时可以通过`document.getElementsByName`方法来获取包含所有匹配元素的NodeList对象。 在实际...

    jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法

    在处理表单时,尤其是动态生成或复用name属性的表单元素时,可能会遇到一个问题:当多个元素的name属性相同,jQuery Validate 只会验证第一个元素,而忽略其他同名的元素。这在需要对每个同名元素进行单独验证的场景...

    将name值一样的input值拼接起来

    在网页开发中,我们经常遇到需要从HTML表单(form)中获取多个同名(name)的输入(input)元素的值,并将其拼接成一个字符串以便于传递到后台进行处理。这个过程通常通过JavaScript来实现,因为它提供了操作DOM和处理数据...

    使用JQuery实现从JSON对象转换为form提交数据

    在前端开发中,有时我们需要将JSON格式的数据转换成表单(form)的格式进行提交,以便于服务器端处理。在JavaScript的世界里,jQuery库提供了一种便捷的方式来进行这样的转换。本篇文章将深入探讨如何利用jQuery从...

    python 之 前端开发(form标签、单选框、多选框….docx

    - **name**: 所有同名的单选按钮属于同一个组,只能选中其中一个。 - **value**: 提交的值。 - **checked**: 表示默认选中状态。 - **注册按钮**: 通常用于提交表单。 #### 3. 多选框 (Checkbox) - **Title**: ...

    IE和Firefox中J avaScript兼容

    - **统一解决方案**: 基于上述情况,推荐使用`document.formName.elements["elementName"]`来获取表单元素,以确保在IE和Firefox中的兼容性。 #### 2. 数组访问 - **IE**: 支持使用`()`和`[]`两种方式访问数组元素...

    jQuery实现form表单元素序列化为json对象的方法

    `serializeArray()`返回的数组中,每个元素都是一个对象,包含`name`和`value`属性。 接下来,我们将创建一个空对象`o`来存储序列化的JSON数据: ```javascript var o = {}; ``` 然后,我们使用`jQuery.each()`...

    php获取表单中多个同名input元素的值

    在这个例子中,`name`属性被设置为`books[]`,这意味着在提交表单时,这些输入框的值将以数组的形式发送到服务器端,即`$_POST['books']`或`$_REQUEST['books']`(如果同时使用了GET和POST)。 当表单提交至`a.php`...

    浏览器兼容页面开发注意事项(javascript篇)_101028分享.pdf

    1. **document.form.item** 问题:在早期版本的IE中,可以通过`document.form.item(name)`来访问表单元素,而在其他浏览器如Firefox、Chrome等,推荐使用`document.forms[formName].elements[itemName]`。...

    如何使用Jquery获取Form表单中被选中的radio值

    在这个例子中,我们有三个同名(`opType`)的radio按钮,用户只能选择其中一个。现在,我们来探讨如何使用jQuery获取选中的radio按钮的值。 **方法1**:最常用且直观的方法是通过属性选择器和`:checked`伪类。这...

    html中关于form与表单提交操作的资料集合

    - 在form提交过程中,可以通过设置input或button元素的formaction、formenctype、formmethod和formtarget属性来覆盖form元素的同名属性值。 - hidden类型的input元素用于创建一个对于用户不可见的表单字段,通常...

    jquery中使用$(#form).submit()重写提交表单无效原因分析及解决

    总结来说,当使用jQuery的validationEngine插件进行表单Ajax校验,并在最后一个字段校验后遇到提交不成功的问题时,需要检查是否由于表单提交按钮的name属性与JavaScript的submit()方法发生冲突。如果确实存在此类...

    php ci 获取表单中多个同名input元素值的代码

    在JavaScript中,如果需要在表单提交前获取这些值,可以使用document.getElementsByName方法来获取所有具有相同name属性的元素,并通过一个循环来处理它们: ```javascript var els = document.getElementsByName(...

Global site tag (gtag.js) - Google Analytics