2012-11-07 3 views
0

J'ai un problème avec IE où je clone un bloc d'éléments de formulaire, en fonction d'un nombre sélectionné dans une liste déroulante. Si 3 est sélectionné dans la liste déroulante, je souhaite répéter le bloc de questions et manipuler l'attribut name afin qu'il soit unique à chaque bloc. Cela fonctionne bien dans Chrome, FF, etc, mais pas dans IE7 et IE8.IE7 & 8 problème avec les éléments de clonage en utilisant jQuery

EDIT, se révèle qu'il est spécifique à IE7 et IE8: here's a jsfiddle

Voici mon code, est-il quelque chose que je fais qui IE est connu pour avoir un problème avec? Tout ce qui se passe actuellement est que IE montre "null" au lieu de chaque bloc qui devrait apparaître. Merci pour toute aide.

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

     $('.questions_clonable:not(: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; 

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

      } 
     } 
    }); 

Les éléments sous forme sont enveloppés dans une période, comme suit:

<span class="questions_clonable hidden"> 

Répondre

0

Si vous utilisez juste cloned_el pour obtenir le code HTML, pourquoi ne pas au lieu de faire

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

puis

var new_block = cloned_el; 

appeler new_block.html(), vous faites ceci:

var new_block_html = $('.questions_clonable').html(); 

alors vous pouvez juste faire référence new_block_html.

Si vous pouvez aussi publier votre balisage, cela pourrait aider, car s'il y a des identifiants, cela causera des erreurs.

.live $() ne supporte pas l'événement change: pas pris en charge: flou, mise au point, mouseenter, mouseleave, changement, soumettre docs.jquery.com/Events/live

Pourriez-vous essayer peut-être à l'aide livequery à la place? docs.jquery.com/Plugins/livequery

EDIT - essayez encore à l'aide de l'événement .on() plutôt que .live(), demo

+0

Merci pour la réponse, cette approche donne lieu à la question « null » qui se passe sur tous les navigateurs. Si je reviens à mon code d'origine dans le PO, le problème se produit uniquement dans IE. Je vais avoir plus de balisage posté – bsod99