2011-06-02 81 views
0

我有这个代码改变输入字段的名称属性值,在除IE8,IE7和IE6以外的所有主流浏览器中都有很好的效果。对于IE的名字只是name="participant_name[{i}]",应该是name="participant_name[1]"jQuery代码-IE8问题

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}]"> 

回答

1

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

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

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

+0

+1我只是打字出来:( – Matt 2011-06-02 13:36:54

+0

我有点困惑,我的脚本不改变名称属性,但在你提供的链接一切工作正常。但我还没有明白我该如何修复这个。:( – elvis 2011-06-02 14:05:44

+0

@elvis你怎么知道你的并没有改变它呢?在哪里出现意想不到的结果? – Niklas 2011-06-02 14:09:43

0

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