innerHTML中表单值不刷新在IE和火狐以及在在火狐当中outerHTML的解决方法

最近在做网站,由于不同类型的产品的参数不同,所以就用起将这些参数放到同一个字段中去(实在找不到其他的解决办法了,如果要为每个参数都建个字段,那产品表至少有200~300个字段)。页面上的解决办法是:将这些参数做成表格(里面有相应的表单),放到“产品类型”表中去。当添加这个产品时,根据用户选择的产品类型,调出不同的表格。所以在添加产品的时候,需要将这些表格显示到一个DIV中,提交的时候,使用javascript将这个div赋值给一个隐藏的表单,最后一起提交给数据库。
如下:

ExpandedBlockStart.gif 代码
< meta  http-equiv ="Content-Type"  content ="text/html; charset=gb2312"   />
< form  name ="form1"  method ="post"  action ="1.asp" >
< div  id ="aaa" >
< table  width ="200"  border ="0"  cellspacing ="0"  cellpadding ="0" >
< tr >
< td > ddd </ td >
< td >< input  name ="textfield"  type ="text"  id ="textfield"  size ="10"   /></ td >
</ tr >
< tr >
< td > ddd1 </ td >
< td >< input  name ="textfield2"  type ="text"  id ="textfield2"  size ="10"   /></ td >
</ tr >
< tr >
< td > eee </ td >
< td >< input  name ="textfield3"  type ="text"  id ="textfield3"  size ="10"   /></ td >
</ tr >  
</ table >
</ div >
</ FORM >
< script  language ="javascript" >
function  f()
{
document.getElementById(
" a " ).value = document.getElementById( " aaa " ).innerHTML;
}
</ script >
< input  type ="button"  name ="button"  id ="button"  value ="提交"  onClick ="f()"   />
< br  />
< textarea  name ="a"  cols ="40"  rows ="5"  id ="a" ></ textarea >
</ FORM >

 

 

这段代码在IE下一点问题都没有,你拿到火狐中运行一下看看。当在表单中输入内容时,再点击提交看看火狐能不能获取到输入到表单中的值。

为了找解决办法,发贴到csdn中去,得到朋友们的帮助,才知道这是火狐的一个BUG,这样是不能实现的。最后在另一个地方找到了答案。需要在文本框中失去焦点的时候,使用js给文本框赋值(this.setAttribute('value',this.value);)。
由于这个页面中的文本框的数量是不固定的,所以想起来使用jquery给所有文本都添加js给文件框赋值。

 

ExpandedBlockStart.gif 代码
< meta  http-equiv ="Content-Type"  content ="text/html; charset=gb2312"   />
< FORM  name ="form1"  method ="post"  action ="1.asp" >
< div  id ="aaa" >
< table  width ="200"  border ="0"  cellspacing ="0"  cellpadding ="0" >
< tr >
< td > ddd </ td >
< td >< input  name ="textfield"  type ="text"  id ="textfield"  size ="10"   /></ td >
</ tr >
< tr >
< td > ddd1 </ td >
< td >< input  name ="textfield2"  type ="text"  id ="textfield2"  size ="10"   /></ td >
</ tr >
< tr >
< td > eee </ td >
< td >< input  name ="textfield3"  type ="text"  id ="textfield3"  size ="10"   /></ td >
</ tr >  
</ table >
</ div >
</ FORM >
< script  language ="javascript"  src ="http://www.aspprogram.cn/js/jquery.js" ></ script >
< script >
$(
" input " ).blur( function (){
this .setAttribute( ' value ' , this .value);
});  
</ script >
< script  language ="javascript" >
function  f()
{
document.getElementById(
" a " ).value = document.getElementById( " aaa " ).innerHTML;
}
</ script >
< input  type ="button"  name ="button"  id ="button"  value ="提交"  onClick ="f()"   />
< br  />
< textarea  name ="a"  cols ="40"  rows ="5"  id ="a" ></ textarea >

 

 

再运行一下这段代码看看,是不是解决了?最后提交到数据库中的方法,写到action中的1.asp就可以了

原创文章:转载请注明来自:http://www.aspprogram.cn/ ,谢谢

 

 

 

2.  在火狐当中outerHTML的解决办法:

直接把以下段码插入到head当中

<!--
if(typeof(HTMLElement)!="undefined" && !window.opera)
{
HTMLElement.prototype.__defineGetter__("outerHTML",function()
{
var a=this.attributes, str="<"+this.tagName, i=0;for(;i<a.length;i++)
if(a[i].specified) str+=" "+a[i].name+'="'+a[i].value+'"';
if(!this.canHaveChildren) return str+" />";
return str+">"+this.innerHTML+"</"+this.tagName+">";
});
HTMLElement.prototype.__defineSetter__("outerHTML",function(s)
{
var d = document.createElement("DIV"); d.innerHTML = s;
for(var i=0; i<d.childNodes.length; i++)
this.parentNode.insertBefore(d.childNodes[i], this);
this.parentNode.removeChild(this);
});
HTMLElement.prototype.__defineGetter__("canHaveChildren",function()
{
return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(this.tagName.toLowerCase());
});
}
//-->

转载于:https://www.cnblogs.com/lbg280/archive/2010/07/01/1769425.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值