为什么动态创建的文本框在Firefox下不能传值?

 昨天关于Firefox和IE的兼容性谈了点自己的体会,不过既然现实是这样,那就研究一下吧。昨天晚上又遇到了Firefox和IE的问题。
开始我想动态创建一个文本框,然后提交数据,最简单的方法当然是

 

  1. <table>
  2. <form action="test.php">
  3. <tr><td>
  4. <div id="div1"></div>
  5. <input type="submit" value="Submit"/>
  6. <input type="button" value="Add" onclick="add();"/>
  7. </td></tr>
  8. </form>
  9. </table>
  10. <script type="text/javascript">
  11. function add()
  12. {
  13.     document.getElementById("div1").innerHTML = document.getElementById("div1").innerHTML + 
  14.     "<span><br/><input type=text name=option[]/>" + 
  15.     "<input type=button value=Delete onclick=/"Delete(this);/"/></span>";
  16. }
  17. function Delete(obj)
  18. {
  19.     obj.parentNode.innerHTML = "";
  20. }
  21. </script>

 

以上是样例,在IE下工作得非常正常,但是在Firefox下就出现了很多问题。我把它列出来,供大家参考,以免以后遇到类似的问题

  1. 第13行这种写法,会造成在Firefox下不能保存用户输入的数据。也就是说,如果用户输入了内容,点Add追加下一行的时候,用户输入的数据会被清空。
  2. 于是我把代码改成这样
  1. <script type="text/javascript">
  2. function add()
  3. {
  4.     try{
  5.         var obj = document.getElementById("div1");
  6.         var node = document.createElement("span");
  7.         node.appendChild(document.createElement("br"));
  8.         var text = document.createElement("input");
  9.         text.name="option[]";
  10.         text.type = "text";
  11.         node.appendChild(text);
  12.         var dnode = document.createElement("input");
  13.         dnode.name="option[]";
  14.         dnode.value="Delete";
  15.         dnode.type = "button";
  16.         dnode.onclick = function(evt) { Delete(this); };
  17.         node.appendChild(dnode);
  18.         obj.appendChild(node);
  19.     } catch(e)
  20.     {
  21.         alert(e);
  22.     }
  23. }

 

这次能在Firefox和IE下正常工作了,但是问题又来了,在Firefox里点击提交之后,发现新创建的文本框内容没有出现在$_POST里。而IE下是正常的。这次肯定不是javascript的问题了,到底什么地方出问题了,百思不得其解,最后只能求助google.功夫不负有心人,终于在一个论坛上看到了答案,就是<form></form>标签不能嵌入<table><></table>中,这是不规范的写法,造成了数据不能正常传递。关于标记是否规范的检查,有个很好的网站可以验证  http://validator.w3.org 经常做WEB开发的不妨验证一下网页的规范。

最后贴上在Firefox和IE下能正常工作的代码

  1. <form action="test.php">
  2. <table>
  3. <tr><td>
  4. <div id="div1"></div>
  5. <input type="submit" value="Submit"/>
  6. <input type="button" value="Add" onclick="add();"/>
  7. </td></tr>
  8. </table>
  9. </form>
  10. <script type="text/javascript">
  11. function add()
  12. {
  13.     try{
  14.         var obj = document.getElementById("div1");
  15.         var node = document.createElement("span");
  16.         node.appendChild(document.createElement("br"));
  17.         var text = document.createElement("input");
  18.         text.name="option[]";
  19.         text.type = "text";
  20.         node.appendChild(text);
  21.         var dnode = document.createElement("input");
  22.         dnode.name="option[]";
  23.         dnode.value="Delete";
  24.         dnode.type = "button";
  25.         dnode.onclick = function(evt) { Delete(this); };
  26.         node.appendChild(dnode);
  27.         obj.appendChild(node);
  28.     } catch(e)
  29.     {
  30.         alert(e);
  31.     }
  32. }
  33. function Delete(obj)
  34. {
  35.     obj.parentNode.innerHTML = "";
  36. }
  37. </script>
Java:PriorityQueue详解——从零基础到应用 看了网上的详解,我反是一篇没看懂,都是什么垃圾玩意也发出来,无语,我自己根据这两天的学习总结出来了下面这些干货,我就是这么学会的,大家要是零基础看肯定木问题。 阅读详情

相关推荐

UniApp消息推送进阶:不用插件实现动态语音播报(含保活策略)

本文详细介绍了在UniApp中实现动态语音播报的进阶方案,无需依赖第三方插件。核心采用透传消息传递动态数据,结合本地TTS引擎合成语音,并针对不同安卓厂商提供了深度通道配置与差异化保活策略,有效解决了App退至后台或被清理后语音播报失效的难题。

weixin_29224309的博客 486

springboot FeignClient POST带参数无法传值问题

springboot POST带参数无法传值问题

英雄汉孑的博客 1万+

从时序博弈到数据稳定:CS1237驱动中的信号滤波与卡尔曼实践

本文探讨了CS1237高精度ADC驱动在复杂工业环境中的信号处理挑战,重点介绍了一阶滤波与自适应卡尔曼滤波算法的实践应用。通过参数优化和动态调整策略,有效提升了数据稳定性和抗干扰能力,为嵌入式系统在噪声环境下的精密测量提供了可靠解决方案。

rnn9storyteller的博客 863

Jquery动态添加节点,绑定事件失效的解决方法

1.事件绑定在append之前时,会出现绑定事件失效。 如图: 解决方法:使用on绑定事件,给此动态节点的父元素(非动态节点)绑定。 即:$("父元素").on("事件",“动态子元素”,function(){ 执行函数; }) 如图: 闲谈:博客以分享工作中遇到的问题以及个人的解决方法为主,难免会有错误或者不足之处,敬请告知,大家一起成长!谢~ 个

u013084331的博客 7850

计算机视觉-深度学习图像检测方法梳理

计算机视觉-深度学习图像检测方法梳理 由于之后要转方向啦,趁这段时间整理手中硕士研究方向的一些阅读笔记,这是一篇关于计算机视觉的基础知识梳理 先搞清一些小知识点 首先我们要弄清楚图像分类、目标定位、语义分割、实例分割的区别 a. 图像分类 :给定一张输入图像,图像分类任务旨在判断该图像所属类别; b. 目标定位 :在图像分类的基础上,我们还想知道图像中的目标具体在图像的什么位置,通常是以包围盒的(bounding box)形式; c. 语义分割 :语义分割是目标检测更进阶的任务,目标检测只需要框出每个目

qq_41662991的博客 9953

Bertopic库安装(二)

Bertopic库安装

weixin_43392789的博客 4893

firefox下JS动态创建的form表单元素获取不到值的问题

今天遇到个问题,在Firefox下用Javascript动态创建input元素,在服务器端获取不到值。 我一点点的删代码,删到最后才发现嵌套的问题。 ...... 把form 写在 table 外面就可以了。 网上有网友说:此写法不符合DOM规范,JS创建新的form表单项时,新的元素无法与未按标准嵌套的form建立关联,所以post数据的时候它是不会被传递

loveme888的专栏 1751

城市规划师必备:ArcMap里用这个免费工具,5步完成建筑群通风廊道分析

本文介绍了城市规划中利用ArcMap进行建筑群通风廊道分析的高效方法,重点讲解了迎风面投影指数(FAI)的应用。通过5个步骤,从数据准备到规划应用,帮助规划师快速评估城市通风潜力,优化建筑布局,提升城市风环境质量。

weixin_26800111的博客 412

用JS创建form在FireFox中不能提交的问题

在一个前端页面上,需要通过JavaScript来提交参数,使用JS创建form表单,将参数append到表单中进行提交,代码如下: Js代码:   function loadConfig(gameUrl,skinId){                   var temp = document.createElement("form");

jquery教程 1367

《科研伦理与学术规范》 全部 习题_答案 2020年秋

科研伦理与学术规范 答案 文章目录科研伦理与学术规范 答案1. 第一章课后习题(必做) 答案1.1 第一章Demo2. 第二章课后习题(必做) 答案3. 第三章课后习题(必做) 答案4. 第四章课后习题(必做) 答案5. 第五章课后习题(必做) 答案6. 第六章课后习题(必做) 答案 # 每行5题 #写于2020.11.17 侵删 1. 第一章课后习题(必做) 答案 ABC, A, B ,D ,ABCD ABC, D, A, BCD, C D, D, 1.1 第一章Demo

羊老羊 25万+

2-1 AUTOSAR ASW概述

应用软件层(Application Software Layer,ASW)位于AUTOSAR整个架构的顶层。它由各种AUTOSAR Software Component(SW-C)组成,每个SW-C封装了各种应用的功能集。每个SW-C只能运行在一个ECU中。ASW层的设计目标是实现功能的可重用性和可配置性。它通过封装底层提供的服务,为上层应用层提供统一的接口。ASW层的开发可以基于AUTOSAR提供的标准化软件组件,也可以根据具体需求进行定制开发。

qq_42357877的博客 1902

Firefox中动态创建元素后不能马上使用的解决方法 Ajax__

 在Firefox 中如果通过JS创建了一段元素,在后续的方法中你会用到该元素的ID之类的东西时你会发现根本行不通的.解决的方法就是在等你创建元素的代码执行完以后设置延时.比如://创建元素var elem = document.createElement("embed");        elem.id = "Graphic";        elem.width = 5

Ajax__的专栏 634

钉钉多维表格开发

从0到1完成钉钉多维表格开发SDK对接与实践案例。

沉修所长,勇逐新机;安而不怠,静而思变 3610

动态创建iframe在Firefox中报错NS_ERROR_FAILURE

Firefox中通过脚本动态创建iframe空标签,在未设置src时有时会报下面这个错 解决方法是先设置src为有效的url,在onload后再替换里面的dom

lihefei_coder的博客 1799

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

动态创建iframe—IE与其他浏览器的不同

  很多情况下,我们都要动态创建元素,比如动态创建iframe,iframe很特殊,它即可以看作是页面元素,也可以看作是窗体对象。所以,所对应的取法也不同。比如当作是页面元素的时候,这样取:document.getElementById(iframe_id),当作是窗体对象的时候取法就多了,主要有三种:1、window.frames[index]    2、window.frames[i

applicationresource的专栏 2634

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Js动态创建div

这是原来的CSS样式  .item{float:left;overflow:hidden;margin-left:8px;margin-top:10px;width: 320px; height:  250px;background-repeat: no-repeat; background-image:url(../images/bgred.jpg)}  .curve{position:r

chunfengdeyiding的专栏 1093

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ajax在ie<select>下不能改变innerhtml值,select innerHTML在IE和FireFox下处理

在前一段时间,做ajax的时候,碰到了这样的问题:=请选择=下面是一个jscript函数function getTypeById(){var obj = document.getElementById('typelist');var result = "";for(var i = 1; i < 6; i++ ){result += ""+i+"" ;}obj.innerHTML = resu...

weixin_28767599的博客 362

jquery createElement 动态创建元素

在IE和Firefox下,动态创建元素的方法是由区别的 如下面代码,在IE下可以运行,在Firefox下会报错 var theform = document.forms[0];theform.appendChild(document.createElement("<input type='hidden' name='__EVENTTARGET'>")); 在 Firefox ...

weixin_30566149的博客 2421

javascript -- 在IE中如何实现将表单提交给动态创建的iframe

标题说明了,这个问题只存在于罪恶的IE.罪恶的IE.友好的FIREFOX是不会有这些令我们头疼的问题.GOOGLE了半天,才找到了结果,期间还碰到google找到了我想看了技术文章,在国内却又让罪恶的某些人禁止访问(blogspot,你不要跟我讲你不通过代理可以访问).可以想象国人是在多么艰难的环境中求生存. 不发没用的言论了. 为什么要将表单提交给动态的iframe呢,其实你可能

magento网站建设,magento模板开发,magento支付模块 4803

js动态创建样式: style和link-实现动态class

js动态创建样式: style 和 link-实现动态创建class-加载-显示-动态存储表单样式class实现存储显示 function blue(color){  if(document.all){ // document.createStyleSheet(url) window.style=".fontColor{ color: "+color+" }";  document.create...

呼吸的小鱼博客 1908

Javascript动态创建 style 节点

Javascript动态创建 style 节点2008-09-16 15:05有很多提供动态创建 style 节点的方法,但是大多数都仅限于外部的 css 文件。如何能使用程序生成的字符串动态创建 style 节点,我搞了2个小时。静态外部 css 文件语法:@import url(style.css);动态外部 css 文件加载的方法有如下:第一种:

wyaspnet的专栏 1153

javascript 在ie9下动态创建表格问题

今天在学习 DOM视频的时候,动态创建元素,视频中的代码一样,就是看不到创建出来的表格, 网上搜索了一个动态创建表格的代码,也是在firfox下可以的,在ie9下不行, 经常反复测试,查找,加入 var tbody = document.createElement("tbody"); 后,一切正常了。原来是这个问题,哎ie啊, 另发现innerText在fireFox下无用。(f

什么时候才能成为大N 1578
上一篇: 随便说说IE和Firefox的兼容性
下一篇: 简单比较 Google Chrome VS. IE8
Meteorlet
博客等级 码龄24年 56粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值