【发布时间】:2016-12-08 21:28:23
【问题描述】:
我将这个 jQuery 插件与 twitter-typeahead 一起使用:
https://maxfavilli.com/jquery-tag-manager
一切都按预期进行,只有一件小事困扰我:
选择一个或多个标签后,离开输入字段显示输入字段内的最后一个标签。而且我不知道为什么/如何以及如何防止这种情况发生。
这个过程是这样发生的:
- 用户点击进入标签管理器输入
- 用户开始输入,自动完成
- 用户选择了一个自动完成项
- 项目被添加为标签,输入字段被清空
- 用户在输入字段外点击,输入字段被最后选择的标签填满 => 为什么??! (期望的结果:离开后输入字段保持空白)
您可以在我上面链接的标签管理器网站上自己试用,只需转到示例
“将标签管理器与 typeahead.js 结合使用”
并输入国家名称,选择国家,然后离开输入字段。
我已经尝试过这个:How to prevent Twitter typeahead from filling in the input with the selected value?,但不幸的是它没有帮助,因为标签在离开输入后被填充到输入字段中 - typeahead 已经关闭了。
HTML:
<div class="form-group mbn">
<label for="artikel_person">Person</label>
<input id="artikel_person" placeholder="E-Mail- oder Namensbestandteil" class="gui-input tm-input" type="text">
<input name="artikel_person" id="artikel_person-out" type="hidden">
<div class="row">
<div class="col-sm-12 tag-container tags-artikel_person">
</div>
</div>
</div>
Javascript:
var th_config = {
hint: true,
highlight: true,
minLength: 1
};
var artikel_person = [];
var artikel_personApi = $("#artikel_person").tagsManager({
delimiters: [13, 44, 59],
backspace: [],
tagsContainer: '.tags-artikel_person',
tagClass: 'tm-tag-system',
onlyTagList: true,
fillInputOnTagRemove: false
}).typeahead(th_config, {
source: ajaxPerson
}).on('typeahead:selected', function (e, d) {
artikel_personApi.tagsManager("pushTag", d.value);
var index = artikel_person.findIndex(function (elem) {
return elem.name === d.value;
});
if (index < 0) {
artikel_person.push({name: d.value, id: d.id});
}
console.log("Typeahead selected. Input value: " + $(this).val()); // logs out empty
}).on('tm:spliced', function (e, tag) {
var index = artikel_person.findIndex(function (elem) {
return elem.name === tag;
});
if (index > -1) {
artikel_person.splice(index, 1);
}
}).on('typeahead:closed', function (obj, datum, name) {
console.log("Typeahead closed. Input value: " + $(this).val()); // logs out empty
});
【问题讨论】:
-
请出示您的代码。
-
@Leopard 我认为这对解决问题没有帮助,但我添加了代码。
-
你在
'typeahead:closed'中尝试过$(obj.currentTarget).val("");吗? -
是的,我做到了——正如我所说,标签会在用户离开输入字段后重新填写,然后预先输入已经关闭。
-
@user2415266 你能用最少的设置添加一个 Jsfiddle 吗?
标签: javascript jquery html jquery-ui