嗨,我正在尝试根据搜索字符串更新multiselect,但在keyup上,UI中的值未更新。 多重选择位于模式对话框中,可通过单击按钮打开。加载时,搜索框和多重选择均可用。用户将输入文本和onkeyup事件,我要过滤多选并仅显示匹配的项目。
我的代码MultiSelect.cshtml
<input type="text" placeholder="Search..." class="c-multi-select-search" onkeyup="MultiSelect.filterMultiSelectunselected(this)" />
<select size="12" class="c-multi-select__unselected" multiple="multiple"></select>
MultiSelect.ts
function openForSibling(thisButton) {
$unsel = $dialogContent.find(".c-multi-select__unselected");
$unsel.find('option').remove();
for (var i = 0; i < optsArr.length; i += 2) {
if (selectedIds.indexOf(parseInt(optsArr[i + 1])) < 0) {
$unsel.append(`<option value="${optsArr[i + 1]}">${optsArr[i]}</option>`);
}
}
}
export function filterMultiSelectunselected(search) {
$unsel = $dialogContent.find(".c-multi-select__unselected");
$unsel.find('option').remove();
for (var i = 0; i < optsArr.length; i += 2) {
if (selectedIds.indexOf(parseInt(optsArr[i + 1])) < 0 &&
optsArr[i].toLowerCase().indexOf(search.value.toLowerCase()) >= 0) {
$unsel.append(`<option value="${optsArr[i + 1]}">${optsArr[i]}</option>`);
}
}
}
openForSibling
和filterMultiSelectunselected
中的代码都执行相同的操作,但后者不会更新UI中的值。当我在开发人员工具中调试时,$unsel
具有基于搜索字符串的正确值,但无法查看为什么未在UI中对其进行更新。
请帮助我解决此问题,因为我看不到这里出了什么问题。该代码是重复的,但请忽略,它是即将被替换/重写的旧代码。
是否应刷新多重选择? 谢谢