`
judim
  • 浏览: 40990 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

js 为input 添加 name属性,主要是针对IE

阅读更多
IE5、6、7均存在一个问题,便是用javascript使用document.createElement创建对象后,便无法动态赋予其name值。而对于FORM表单里的input元素里的name属性非常重要,如果name值赋予不成功,提交表单后肯定会出问题的。
一般我们的思想肯定是这样写:
t = document.createElement('input');
input.id = 'myId';
input.name = 'myName';
input.TYPE='text';(在IE下定义type改成大写)

这种写法在FireFox等非IE浏览器以及IE8中是正确的,但IE5、6、7不正确(微软总是在不经意间给予人以打击)。按照官方说法是,必须在createElement时赋予其name,即这样写:

JavaScript 代码复制内容到剪贴板
var input = document.createElement('<INPUT name="myName"/>');
input.id = 'myId';
可是这样写了之后,IE5、6、7是成功了。FireFox等非IE浏览器便不认了,创建元素失败。于是要将它们妥协。

在http://alt-tag.com/blog/archives/2006/02/ie-dom-bugs/用一个函数(判断是否为IE)解决此问题,它是把createElement重写了一遍:

function createElement(type, name) {    
var element = null;    
try {       
    element = document.createElement('<'+type+' name="'+name+'">');    
} catch (e) {}    
if (element==null) {    
element = document.createElement(type);    
element.name = name;    
}    
return element;    
}   
于是我写了一个例子页面测试一下,果然OK啰:

<html>
<head>
</head>
<body>
<div id='oyksoft'></div>
<input type="button" value="DOIT" onclick="docreate()"/>
<script type='text/javascript'>
function CreateInput(container){
container.innerHTML="";
var myinput=createElement("input","oyksoft_input");
myinput.id="oyksoft_id";
myinput.value="创建成功啦!";
container.appendChild(myinput);
alert(myinput.name);
}
function docreate(){
var container=document.getElementById("oyksoft");
CreateInput(container);
}
function createElement(type, name) {
var element = null;
try {
// First try the IE way; if this fails then use the standard way
element = document.createElement('<'+type+' name="'+name+'">');
} catch (e) {
// Probably failed because we’re not running on IE
}
if (element==null) {
element = document.createElement(type);
element.name = name;
}
return element;
}
</script>
</body>
</html>
</body></html>
分享到:
评论

相关推荐

    javascript createElement()创建input不能设置name属性的解决方法

    其中obj.name = “select”;这句话并不能起到预期的作用,无论是看生成后的HTML代码还是观察使用document.getElementsByName()获取的数组长度,都会发现这个name设置并没有起作用。... 在Name属性的

    javascript的IE和Firefox兼容性汇编

    javascript的IE和Firefox兼容性汇编 1. document.form.item 问题 (1)现有问题: 现有代码中存在许多 document....又如:document.getElementsByName("inputName")(1) 改为 document.getElementsByName("inputName")[1]

    js propertychange和oninput事件

    还好有propertychange(IE)和oninput事件。 oninput是标准浏览器的事件,一般应用于input元素,当input的value发生变化时就会发生,无论是键盘输入还是鼠标粘贴的改变都能即时监听到。 浏览器兼容 IE9以下是不支持...

    IE9支持placeholder

    这里面是一个支持IE9以及IE9一下的兼容支持placeholder的javascript案例。...需要实现input支持的,需要修改三个地方,这三个地方名字均为textarea,替换为input即可,同时,name也需要更改为:name='input'

    js实现input密码框提示信息的方法(附html5实现方法)

    今天我们主管说要在密码框加入个”请输入密码”的提示信息,第一次的时候本来想着用修改input type 属性的方法呢,结果有某些特别的浏览器不支持,IE的input的type属性是只读的,不能动态设置.所以换其它的方法,实例...

    大名鼎鼎SWFUpload- Flash+JS 上传

     SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统&lt;input type="file" /&gt;标签的文件上传模式。 [编辑本段]SWFUpload...

    js onpropertychange输入框 事件获取属性

    具体理解为:onpropertychange能及时捕获属性值的变化,而onchange在属性值改变时只有通过鼠标执行某些操作才能激活该事件! 但onpropertychange只有IE支持,FireFox下的怎么解决呢?firefox的事件oninput,效果和...

    colorPicker.js javascript颜色选择框

    javascript颜色选择框,适用于ie,firefox,chrome等浏览器. 调用方法: &lt;script language=javascript&gt; function changeColor(){ var colorText = document.getElementById('color'); if (colorText.value == '')...

    简单实用国产jQuery UI框架 - DWZ富客户端框架DWZ RIA 1.4.4 (20121016 修正了横向导航js报错问题)

    修复多文件上传插件uploadify 的html扩展方式,java读取不到数据流问题:原因是以前没有把input="file" 的name属性填充到插件uploadify的fileDataName中 保持navTab有pagerForm的列表页面reload查询条件(比如第5页...

    IE和Firefox下javascript的兼容写法小结

    1、发现IE下input标签的id属性默认和name属性相同,而Firefox必须明确写出id属性的名称否则不能使用id属性。 如:&lt;input type=”text” name=”username” value=””&gt; 在IE下如下代码可以执行而在Firefox下却...

    JS分页效果JS分页效果

    function showPages(name) { //初始化属性 this.name = name; //对象名称 this.page = 1; //当前页数 this.pageCount = 1; //总页数 this.argName = 'page'; //参数名 this.showTimes = 1; //打印次数 } ...

    IE与FireFox的JavaScript兼容问题解决办法

    以下是 我在开发中遇到的情况: 1、动态删除table里的某一行。 table:表示table对象。...inputElement.propertyName; //firefox执行失败,ie执行成功 IE与FireFox兼容写法 document.getElementById(“txt

    Ajax模仿google提示输入框 v1.8

    inputName 表单input的name.即 提交时获取input的name。飞!飞Asp技术乐园也为search.asp页面获取input的name inputText inputName 所显示的数据 inputValue inputName 所提交的数据,当inputValue省略时,inputValue...

    js使用小技巧

    Javascript小技巧一箩筐 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode ...

    js在火狐和IE浏览器的差异

    js在火狐和浏览器中的差异 1. document.form.item 问题 (1)现有问题: 现有代码中存在许多 document.formName.item("itemName") 这样的语句,不能在 MF 下运行 (2)解决方法: 改用 document.formName.elements[...

    checkbox:一个用于替换 `input[type=checkbox]` 的 AngularJS 指令,以便它可以跨浏览器设置样式

    这是一个已知问题,没有 100% 兼容性的合理解决方法(尽管改进可能是为常绿浏览器添加MutationObserver支持,但这不适用于 IE10 及以下)。 用法 &lt;checkbox ng-model="" [name=""] [ng-true-value=""] [ng-...

    解决IE7中使用jQuery动态操作name问题

    问题:IE7中无法使用Jquery动态操作页面元素的name属性。 在项目中有出现问题,某些客户的机器偶尔会有,后台取不到前台的数据值。 然开发和测试环境总是不能重现问题。坑爹之处就在于此,不能重现就不能调试,就不...

    ExtAspNet_v2.3.2_dll

    +为页面的Form添加autocomplete="off"属性。 -参考http://www.cnblogs.com/sanshi/archive/2009/09/04/1560146.html#1635830 +添加对extjs3.0中所有语言的支持。 -ExtAspNet扩展的多语言包在js\languages\...

    js插件文件上传

    支持多参数,ie9、ie10兼容 if (data) { ... $("&lt;input name='" + i + "' id='" + i + "' value='" + json[i] + "' /&gt;").appendTo(form); if (typeof json[i] == "object") { recurJson(json[i]); } } }

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    +为页面的Form添加autocomplete="off"属性。 -参考http://www.cnblogs.com/sanshi/archive/2009/09/04/1560146.html#1635830 +添加对extjs3.0中所有语言的支持。 -ExtAspNet扩展的多语言包在js\languages\...

Global site tag (gtag.js) - Google Analytics