2016-07-30 6 views
2
  1. ユーザーが「+」ボタンをクリックすると、ドロップダウンと入力フィールドが追加されます。私は各行のドロップダウン値としてその入力フィールド名を作りたいと思う。ドロップダウン値で追加する新しい入力フィールド

  2. 最初のドロップダウンで「facebook」を選択した場合、2番目のドロップダウンリストに表示されません。単純に値を選択すると、次のドロップダウンには表示されません。私はその部分をしました。しかし、私の質問は、2番目のドロップダウンで "Google"を、3番目のドロップダウンで "Yahoo"を選択した場合です。もう一度、最初または2番目のドロップダウンをクリックすると、再び「Yahoo」が表示されません。

コードが存在する場所の下にあるリンクを見つけてください。

http://jsfiddle.net/mhmdsohail/v9uem13u/5/

$(document.body).on('click', '.add-more', function (e) { 
    var lastSelect = $("select").last().find('option'); 
    var toAppend = ''; 
    if (lastSelect.length > 1) { 
     toAppend += '<select name="select[]">'; 
     $.each(lastSelect, function (i, v) { 
      if ($(this).text() !== $("select:last option:selected").text()) 
       toAppend += '<option value="' + $(this).val() + '">' + $(this).text() + '</option>'; 
     }); 
     toAppend += '</select>'; 
     toAppend += '<input type="text" name=""><br>'; 
    } 
    $(".append-select").append(toAppend); 
}); 
+0

ここにHTMLコードを投稿してください –

+0

@MayankPandey http://jsfiddle.net/mhmdsohail/v9uem13u/5/ – acmsohail

+0

をチェックしてください。コードに選択変更処理を含める必要があります。それはあなたの仕事をより少なくするのに役立ちます。私はまた、可能なオプションを指定する配列をinlcudeすることをお勧めします。あなたは、選択の変更中にDOMを解析する必要はありません。 var options = [{name: "Facebook"、inUse = true}、{...}、...] – Wolfgang

答えて

3

このJavaScriptコードは、あなたが求めているものを行います。

(私が理解したものと同様に、現在のすべてのdropdowns(および将来のものから、この削除されます選択したオプション)次の入力フィールドは、最後に選択された値と等しい値を有するname属性を含む。

$(document.body).on('click', '.add-more', function (e) { 
       var lastSelect = $("select").last().find('option'); 
       var selectedOption = $('select:last').val(); 
       var toAppend = ''; 
       if (lastSelect.length > 1) { 
        toAppend += '<select name="select[]">'; 
        $.each(lastSelect, function (i, v) { 
         if ($(this).text() !== $("select:last option:selected").text()) 
          toAppend += '<option value="' + $(this).val() + '">' + $(this).text() + '</option>'; 
        }); 
        toAppend += '</select>'; 
        toAppend += '<input type="text" name="' + selectedOption + '"><br>'; 
       } 
       $(".append-select").append(toAppend); 
       if ($('select:last > option').length > 1) 
         $("select").find('option[value=' + selectedOption + ']').remove(); 
      }); 

可能な限り多くの変更を最小限に抑えようとしました(3行または4行しか編集されませんでした)。

+0

あなたの答えは部分的に正しいです。しかし、各行に選択されたドロップダウンは表示されませんでした。 私は新しい行で同じドロップダウン値を選択することはできません。ドロップダウン値は、フォーム全体で1回だけ選択することもできます。また、ドロップダウンに表示する必要があります。 例最初のドロップダウンでfacebookを選択した場合、2番目のドロップダウンでGoogleを選択します。もう一度Facebookのプルダウンをクリックすると、Googleを再度選択することはできません。しかし、現在、その許可。それを避ける方法。私はこのような出力が必要です。 http://acmsohail.com/error.jpg – acmsohail

+0

@ user3671027私はあなたとあなたのメールを気づいた。それを心配しないでください。同時にいくつかのことを解決するだけです。 :) –

+1

事前に感謝します。私はそれを整理するのを手伝ってください。 – acmsohail

関連する問題