繁体   English   中英

如何从自动完成列表中删除以前选择的项目

[英]How to remove previously selected items from autocomplete list

我正在使用 jquery 自动完成,我可以从自动完成中选择一个项目,我不希望以前选择的项目出现在自动完成下拉列表中。

例如:从下面代码片段中的自动完成,我输入“c++”并选择这个项目,我点击按钮然后一个带有输入元素的新行被添加到顶部,值为“c++”。 现在,当我在自动完成中再次键入“c++”时,我不希望出现“c++”以供选择。

这是代码片段

 let $selectedValue; let $ArraySample = [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ]; function maintest () { let $table = $('<table>').prop("id", "testTable"); let $row0 = $('<tr>').prop("id", "selectedRow").appendTo($table); let $cell0 = $('<td>').appendTo($row0); let $input2 = $("<input>").prop("id","input0").appendTo($cell0); let $cell1 = $('<td>').appendTo($row0); let $button = $("<button>").addClass('btn').text("Button").click(function() { let $row1 = $('<tr>').insertBefore($("#selectedRow")); let $cell2 = $('<td>').appendTo($row1); let input3 = $("<input>").addClass("input1").prop("value",$selectedValue).appendTo($cell2); }).appendTo($cell1); $("#mainDiv").append($table); $("#input0").autocomplete( {"source": $ArraySample , select:function(event, ui) { $selectedValue = ui.item.value; removeItem($selectedValue); } }); } function removeItem($item) { $ArraySample = $ArraySample.filter(function(item) { return item !== $item; }) }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script> <body onload="maintest()"> <div id="mainDiv"></div> </body>

您的 removeItem 函数可能有误。 https://developer.mozilla.org/tr/docs/Web/JavaScript/Reference/Global_Objects/Array/splice Array.splice 方法

 let $selectedValue; let $ArraySample = [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ]; function maintest () { let $table = $('<table>').prop("id", "testTable"); let $row0 = $('<tr>').prop("id", "selectedRow").appendTo($table); let $cell0 = $('<td>').appendTo($row0); let $input2 = $("<input>").prop("id","input0").appendTo($cell0); let $cell1 = $('<td>').appendTo($row0); let $button = $("<button>").addClass('btn').text("Button").click(function() { let $row1 = $('<tr>').insertBefore($("#selectedRow")); let $cell2 = $('<td>').appendTo($row1); let input3 = $("<input>").addClass("input1").prop("value",$selectedValue).appendTo($cell2); }).appendTo($cell1); $("#mainDiv").append($table); $("#input0").autocomplete( {"source": $ArraySample , select:function(event, ui) { $selectedValue = ui.item.value; removeItem($selectedValue); } }); } function removeItem($item) { // ==== UPDATE HERE === $ArraySample.splice($ArraySample.indexOf($item),1) // ==== UPDATE HERE END === }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script> <body onload="maintest()"> <div id="mainDiv"></div> </body>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM