jQuery代码 - IE8问题

时间:2011-06-02 13:21:04

标签: jquery

我有这个代码更改输入字段名称属性值,在除IE8,IE7和IE6之外的所有主流浏览器中都很有效。对于IE,名称只保留name="participant_name[{i}]",应为name="participant_name[1]"

var i = 1;
var input_name = null;
$('.dubl input').each(function () {
   var new_input_name = $(this).attr('name').substring(0, $(this).attr('name').indexOf('['));
   if (input_name !== new_input_name) {
       input_name = new_input_name;
       i = 1;
   }
   $(this).attr('name', input_name + '[' + i + ']');
   i++;
});

HTML

<input type="text" name="participant_name[{i}]">

3 个答案:

答案 0 :(得分:1)

实际上,在IE中也正确地更改了属性name。但是,我认为您可能遇到的问题是,当您提交表单时,它不是更新的字段name

IE没有考虑name更改,因此,在发送表单时,它仍然使用与创建表单时相同的name。要解决此问题,您可以在更改名称属性时将其重新添加到表单/元素的DOM中。

http://jsfiddle.net/niklasvh/wbnhS/你可以在那里测试它,属性确实会改变,或者你在IE中检查DOM。

答案 1 :(得分:0)

使用.replace!

这是一个快速小提琴的例子: http://jsfiddle.net/H5fkq/

答案 2 :(得分:0)

如果这不是您项目中唯一需要在客户端进行此类替换的地方,那么可能值得查看模板库,例如jQuery Templates