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

フォームの元のインスタンスと複製されたインスタンスの間で問題が発生している理由は 2 つあります。

  • nameフォームは、正しい送信のために属性に依存しています。name場合によっては、フィールドが重複しているフォームを送信すると、配列がサーバーに送信されます。それ以外の場合は上書きされます。

  • フォームの残りの部分を見ずに-フィドルは特に役に立ちません、申し訳ありません-jQueryセレクターがクローンからも要素を返す可能性が高いようです。これに対抗するには、フォームの各インスタンスに一意の ID を与え、独自の$('#form-n')オブジェクトからフォーム変更ロジックを連鎖させます。ここで、「n」はフォームの連続した ID 番号に置き換えます。

于 2012-09-10T06:32:19.763 に答える