1

ラジオボタンのクローンを作成しているときにIE7で問題が発生します。名前とID属性を動的に更新していますが、チェックされているラジオボタンが動的に作成された他のボタンをリセットするという問題があります。これをどのように修正できるか考えてみてください。これが問題のフィドルです

これは、フォームフィールドを操作する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>');

        }   
    }
});​
4

2 に答える 2

3

IE7 は、動的に作成されたラジオ ボタンに問題があります。IE7 は非常に優れたブラウザーであるため、これは奇妙です。nameIE7 では、ラジオ ボタンの属性の名前を変更できないようです。

考えられる回避策を次に示します。

于 2012-11-27T14:59:03.550 に答える
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);
        }
    } 
于 2012-11-28T17:41:30.303 に答える