动态创建IE7单选按钮问题

时间:2012-11-27 14:03:27

标签: jquery forms internet-explorer internet-explorer-7 radio-button

当我创建单选按钮克隆时,我在IE7中遇到了问题。我正在动态更新名称和ID属性,但是,我仍然有一个问题,即正在检查的单选按钮会重置已动态创建的其他任何按钮。知道如何解决这个问题吗? Here is a fiddle of the issue

这是操纵表单字段的JS代码:

// Dropdown select
$('#quantity').live("change", function(){

    $('.questions_clonable:not(.questions_clonable:first)').remove();


    // Get value of selection
    var num = $(this).val();

    var cloned_el = $('.questions_clonable').clone();   

    if (num > 1)
    {  
        for (var i = 1; i < num; i++)
        {
            // Assign cloned block to new var
            var new_block = cloned_el;  

             // Store previous number for replacing with current in cloned block input fields
                var prev = i-1;

                // Update input name to make it unique
                new_block.find('input').each(function() {     
                    this.name = this.name.replace(prev, i); 
                    this.id = this.id + i; 
                });

            // Bit of a workaround needed to clone properly, reiterating class name
            $('.multiple_questions_container').append('<span class="questions_clonable hidden">'+new_block.html()+'</span>');

        }   
    }
});​

2 个答案:

答案 0 :(得分:3)

IE7在动态创建的单选按钮方面存在问题,这很奇怪,因为它是如此神奇的浏览器。似乎IE7不允许您重命名单选按钮的name属性。

Here是一种可行的解决方法。

答案 1 :(得分:0)

我找到了几个可能的解决方案,但以下工作完美:

function setElementName(elems, name) {
        if ($.browser.msie === true){
            $(elems).each(function() {
                this.mergeAttributes(document.createElement("<input name='" + name + "'/>"), false);
            });
        } else {
            $(elems).attr('name', name);
        }
    }