javascript - 多个 <select> 使用 selectize,已选择时删除选项

标签 javascript jquery html selectize.js

我是 selectize.js 的新手,这是我的问题的简化版本。请参阅下面的 fiddle 。

Fiddle

我想要的不是在已选择项目时选择该项目。

例如。

  • 点击添加按钮,然后选择全名。
  • 再次点击添加
  • 第二个中不应选择全名 <select>或者不应该是可见的。

我怎样才能做到这一点?

HTML

<button>Add</button><br/><br/>
<div id="container"></div>

JS

var saveAsOptions = [
        { value: 'full-name', text: 'Full Name' },
        { value: 'first-name', text: 'First Name' },
        { value: 'last-name', text: 'Last Name' }
];

var i = 1;
var $selectSaveAs;

$('button').on('click', function(){
    
    $('#container').append(generateSaveAs(i));
    
    $selectSaveAs = $('#saveAs' + i).selectize({
       options: saveAsOptions, 
       placeholder: '- Fields -'
    });
    
    i++;
});

function generateSaveAs(id){
    return '<select id="saveAs' + id + '"></select>';
}

最佳答案

因此,每次创建新的下拉列表时,您都会插入静态值。通过分析代码,我发现所选值始终有一个类项。因此,我们可以做的是创建一个新数组以在下拉列表中显示并过滤掉已选择的数组。然后我们可以将它绑定(bind)在下拉菜单中。

要过滤掉您可以使用 filter

saveAsOptionsFiltered = saveAsOptions; //Initialize with your all drop down options
$(".item").each(function(index,element) {
    /*Filter out the already selected ones*/
    saveAsOptionsFiltered = saveAsOptionsFiltered.filter(function (savevalue) {return savevalue.text !== $(element).text() }); 
});

JSFiddle

当所有选项都被选中并且您停止添加更多内容时,我还没有处理这种情况。我刚刚分享了您可以在其中过滤掉所选内容的代码。

关于javascript - 多个 <select> 使用 selectize,已选择时删除选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28941940/

相关文章:

javascript - 如何改变一些元素异步使用jquery的位置

javascript - Window.close() 不适用于关闭当前选项卡

javascript - 在 Codeigniter 中使用 javascript multifield 动态选择框

javascript - https可调用云函数不返回值

javascript - 计算数组中的数字,然后将其写出来

javascript - 检测提交类型,如果是通过回车键或按钮单击

javascript - 游戏中的简单 javaScript 错误 - 图像不垂直移动

javascript - 如何使用 JavaScript 设置函数参数?

html - 我怎样才能确保我的标题始终在全宽和响应中居中?

javascript - XMPP in-band registration (XEP-0077) : Differs from simple jid/pw login, 步骤是什么?