我进行了多次选择,我从一次选择中选择的值应该出现在不允许重复的第二次选择中。

<select name="campaignName" size=""multiple>
   <c:forEach items="${campaignDetails}" var="campaignDetails">
      <option value="${campaignDetails.campaignId}">${campaignDetails.campaignName}</option>
   </c:forEach>
</select>
<select property="selectedCampaigns" id="selectedCampaigns" name = "selectedCampaigns" size="13" styleClass="regioncombo" style="width:200px;"  multiple="true" >
</select>

脚本将选定的选区从一个选区添加到另一个选区...

 $(document).ready(function () {
     $(document).on('click', '#manDiv', function () {
         $("#submitSync").show();
     });

});

$(document).ready(function () {
   $("#addCampaign").click(function () {
      $("#select-campaigns option:selected").each(function () {
         var $this = $(this);
         if ($this.length) {
            var selectedCampaigns = document.getElementById("selectedCampaigns");
//          console.log(selectedCampaigns);
            for (var j = 0; j < $this.length; j++) {
               var option = document.createElement('option');
//             console.log((option[0]).attr('value'));
               option.text = $this.text();
               option.value = $this.val();
               selectedCampaigns.add(option, j + 1);
            }
         }
      });
   });
});

上面的代码也允许重复值,但我想知道如何限制重复值的添加。即,一旦我们选择并添加了一个值,则第二次不应接受相同的值。

最佳答案

这是一个工作示例。

脚本仅比较选项的文本内容。

元素“选择”的ID-S进行了更改以使脚本正常工作。

脚本将第二选择的每个选项与第一选择的每个选择的选项进行比较,如果没有重复项,则追加选择的选项。

$(document).ready(function () {
     $(document).on('click', '#manDiv', function () {
         $("#submitSync").show();
     });

    $("#addCampaign").click(function () {
      $("#campaigns option:selected").each(function () {
         var $this = $(this);
         if ($this.length) {
            var selectedCampaigns = document.getElementById("selectedCampaigns");
            for (var j = 0; j < $this.length; j++) {
                var duplicate = false;
              for (var i=0; i < selectedCampaigns.length; i++) {
                  if ($this.text() == $("#selectedCampaigns option").eq(i).text())
                    duplicate = true;
              }
               if (!duplicate) {
                var option = document.createElement('option');
               option.text = $this.text();
               option.value = $this.val();
               selectedCampaigns.add(option, j + 1);
               }
           }
         }
      });
   });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="campaignName" size="10" multiple="true" id="campaigns">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
</select>
<select property="selectedCampaigns" id="selectedCampaigns" name="selectedCampaigns" size="13" styleclass="regioncombo" style="width:200px;" multiple="true">
</select>
<button id="addCampaign">addCampaign</button>

09-30 18:13
查看更多