2

使用 jQuery,当在克隆中选择不同的值时,如何在不修改原始表单的情况下创建表单的克隆。目前,当在克隆表单中选择一个值时,返回的结果会添加到克隆的结果以及原始结果中。我只想让结果出现在每个独特的表单中。这是我所拥有的:

 <script>
      $(document).ready(function() {

         shows / hides results based on selection

         $(".color-select").live("change" ,function(){
            if($(this).val() == 'red'){ 
              $('.red').removeClass('hide');

               // toggles sub menus
              $(this).parent('.controls').find('.submenu-select').removeClass('hide');
            }

            if($(this).val() == 'orange'){ 

              $('.orange').removeClass('hide');
              $(this).parent('.controls').find('.submenu-select').addClass('hide');
            }
            if($(this).val() == 'yellow'){ 
              $('.yellow').removeClass('hide');
              $(this).parent('.controls').find('.submenu-select').addClass('hide');
            }
            if($(this).val() == 'green'){ 
              $('.green').removeClass('hide');
              $(this).parent('.controls').find('.submenu-select').addClass('hide');
            }
          });

; 
         // Duplicates category select menu 

           $(".add-color").click(function(){
          $(".color-category").clone().removeClass('color-category').appendTo("#we-want-to").find('.submenu-select').addClass('hide');

        });


        $(".add-color-alternate").click(function(){
          $(".color-category-alternate").clone().removeClass('color-category-alternate').appendTo("#we-want-to").find('.submenu-select, .results-table').addClass('hide');

        });

这是一些 html http://jsfiddle.net/mckenney42south/Z4yFs/的小提琴

谢谢!

4

1 回答 1

1

您在表单的原始实例和克隆实例之间看到 dickiness 的原因有两个:

  • 表单依赖于name正确提交的属性。在某些情况下,提交带有重复name字段的表单会导致将数组发送到服务器;在其他情况下,它将覆盖。

  • 没有看到你的表单的其余部分——小提琴不是特别有用,抱歉——在我看来,你的 jQuery 选择器很可能也从克隆返回元素。为了解决这个问题,您可以给表单的每个实例一个唯一的 ID,并将您的表单更改逻辑与它自己的$('#form-n')对象链接起来,其中“n”将替换为表单的顺序 ID 号。

于 2012-09-10T06:32:19.763 回答