将多个值添加到多个选择jquery插件(已选择)

时间:2017-07-23 17:08:57

标签: javascript jquery

我在向所选插件添加新选项值时遇到问题。

这里有你所有的代码。

我做了什么?

  • 我创建了一个数组来添加所有选定的选项和最近选择的选项
  • 我将新数组添加到所选输入中并更新它以便动态获取结果

有什么问题?

  • 我在所选插件中有重复值
  • 我没有得到想要的结果,每次点击新的时只显示一个值,而不是在之前选择的选项中添加!

想要获得什么结果?

  • 当我点击第一个多选(.second类)时,会自动添加到第二个多选(选择的插件)中。
  • 如果我在第二个多选中已经存在一个值中的另一个时间点击,则不会再添加该值。
  • 每当我点击一个新选项时,我会在第二个多选中添加并选择它,并且不仅会显示所选择的所有选项,而且还会显示所选的新选项。

有任何修复吗?



$(".chosen-select").chosen();

$("#second").on('click', 'option', function(e) {
var getid = $(this).val();
var getnom = $(this).text();
var ids = [];

$('.chosen-select')
         .append($("<option></option>")
                    .attr("value",getid)
                    .text(getnom)); 
                    
ids.push(getid); 
$('.chosen-select option:selected').each(function(i, selected) {
ids.push(i); 
});	

$(".chosen-select").val(ids).trigger("chosen:updated");
});

$('button').click(function(){
        $(".chosen-select").val('').trigger("chosen:updated");
});
&#13;
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.1.0/chosen.jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.1.0/chosen.min.css" rel="stylesheet"/>


<select id="second" data-placeholder="Choose a Country..."  multiple style="width:350px;" tabindex="4">
          <option value=""></option> 
          <option value="United States">United States</option> 
          <option value="United Kingdom">United Kingdom</option> 
          <option value="Afghanistan">Afghanistan</option> 
          <option value="Albania">Albania</option> 
          <option value="Algeria">Algeria</option> 
          <option value="American Samoa">American Samoa</option> 
          <option value="Andorra">Andorra</option> 
          <option value="Angola">Angola</option> 
          <option value="Anguilla">Anguilla</option> 
        </select>
<br /><br />
<select id="first" data-placeholder="Choose a Country..." class="chosen-select" multiple style="width:350px;" tabindex="4">
   
   
        </select>
<br /><br />
<button class="btn">Reset</button> 
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

更新1(修复问题1),只有通过添加if语句才能将选项添加到.chosen-select - 元素(如果它尚未存在):

if ($('.chosen-select option[value="'+getid+'"]').length === 0) {
    $('.chosen-select')
             .append($("<option></option>")
                        .attr("value",getid)
                        .text(getnom)); 
}

更新2(修复问题2),将正确的值推送到ids - 数组。不是索引,而是所选选项的值。可以通过记录ids的值来注意到(例如console.log(ids))。

$('.chosen-select option:selected').each(function(i, selected) {
    ids.push(selected.value); // Was: ids.push(i);
}); 

工作示例:https://jsfiddle.net/petervanderwal/oz9knatt/