bootstrap 多选添加自定义文本输入
bootstrap multiselect adding custom text input
我正在尝试添加一个文本框作为选项之一,因为我在单独的列表中使用多选作为过滤元素。我希望文本框充当自由文本过滤器。
我已经尝试了很多东西,但无法让它工作...
我尝试了 enabledHTML 并在选项中插入了输入框,但是尽管文本框显示它被禁用(我无法输入任何文本 - 它似乎被父元素阻止但我无法弄清楚是哪个)
我试图劫持使用 enableFiltering 时显示的文本框。问题是当我在文本框中输入文本时,我似乎无法禁用导致列表过滤的事件。我不希望发生这种过滤,只是希望文本理想地保留在文本框中,旁边有一个复选框,然后我可以通过引用文本框值来处理我的列表过滤。
谁能告诉我怎么做?
想通了。下拉列表中的所有输入都有一个 onchange 事件。阻止传播让我可以利用它。
因此启用 HTML,添加了输入文本框作为选项。
然后将更改事件绑定到该文本框并停止传播。
现在可以用了
好的,这对我有用。为了停止传播,您需要在 之后 初始化或重建多选。否则,选择器将不起作用,也不会停止传播。
您可以结帐this Fiddle for a live version。
我的代码,示例取自 de Docs(实时工作版本请查看 Fiddle):
$(function () {
const inputTemplateOptions = {
enableHTML: true,
templates: {
li: '<li><a><label style="display:inline;"></label><input type="text" class="custom-input" /></a></li>'
}
};
$('select[multiple]').each(function() {
const config = Object.assign(
{},
inputTemplateOptions,
$(this).data('multiselect-config')
);
$(this).multiselect(config); // here we initialized it with our config
$( "input.custom-input" ).on( "click", function() {
event.stopPropagation();
});
});
});
<body>
<select id="example-multiple-selected" multiple="multiple">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
<option value="5">Option 5</option>
<option value="6">Option 6</option>
</select>
</body>
我正在尝试添加一个文本框作为选项之一,因为我在单独的列表中使用多选作为过滤元素。我希望文本框充当自由文本过滤器。 我已经尝试了很多东西,但无法让它工作...
我尝试了 enabledHTML 并在选项中插入了输入框,但是尽管文本框显示它被禁用(我无法输入任何文本 - 它似乎被父元素阻止但我无法弄清楚是哪个)
我试图劫持使用 enableFiltering 时显示的文本框。问题是当我在文本框中输入文本时,我似乎无法禁用导致列表过滤的事件。我不希望发生这种过滤,只是希望文本理想地保留在文本框中,旁边有一个复选框,然后我可以通过引用文本框值来处理我的列表过滤。
谁能告诉我怎么做?
想通了。下拉列表中的所有输入都有一个 onchange 事件。阻止传播让我可以利用它。 因此启用 HTML,添加了输入文本框作为选项。 然后将更改事件绑定到该文本框并停止传播。 现在可以用了
好的,这对我有用。为了停止传播,您需要在 之后 初始化或重建多选。否则,选择器将不起作用,也不会停止传播。
您可以结帐this Fiddle for a live version。
我的代码,示例取自 de Docs(实时工作版本请查看 Fiddle):
$(function () {
const inputTemplateOptions = {
enableHTML: true,
templates: {
li: '<li><a><label style="display:inline;"></label><input type="text" class="custom-input" /></a></li>'
}
};
$('select[multiple]').each(function() {
const config = Object.assign(
{},
inputTemplateOptions,
$(this).data('multiselect-config')
);
$(this).multiselect(config); // here we initialized it with our config
$( "input.custom-input" ).on( "click", function() {
event.stopPropagation();
});
});
});
<body>
<select id="example-multiple-selected" multiple="multiple">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
<option value="5">Option 5</option>
<option value="6">Option 6</option>
</select>
</body>