修改:已添加working JSFiddle
我正在使用Twitter Bootstrap TagsInput和Bootstrap Typeahead。我的源代码是一个json文件,但这是无关紧要的,我已经用静态源检查了。
typeahead和tagsinput正在运行,但是当我按下enter,tab或单击标签时,它会创建一个完整的副本。
每当我按Enter键或完成预先输入时,就会发生极端'默认'。如果我通过用逗号分隔来打破预先输入,或者将焦点从窗口移开,则不会发生。
这是输入:
<input id="itemCategory" type="text" autocomplete="off" class="tagsInput form-control" name="itemCategory">
以下是剧本:
<script>
$('.tagsInput').tagsinput({
confirmKeys: [13, 44],
maxTags: 1,
typeahead: {
source: function(query) {
return $.get('listcategories.php');
}
}
});
</script>
我确信这是不可重复的东西,运气不好,所以我希望有人会有一些他们知道会导致这种情况发生的机构知识。
以下是dev中额外文字的图片。工具:
我真的很感激任何建议或意见。谢谢。
工作代码
感谢@Girish,以下是“解决”这个问题的原因。我认为这是一个时间错误,在更新版本的jQuery或Typeahead中引入。这段代码只是手动删除了额外的元素,虽然希望有一些东西可以防止它被放在那里,从而消除了额外的代码。现在它对我有用。
$('.tagsInput').tagsinput({
confirmKeys: [13, 44],
maxTags: 1,
typeahead: {
source: function(query) {
return $.get('tags.php');
}
}
});
$('.tagsInput').on('itemAdded', function(event) {
setTimeout(function(){
$(">input[type=text]",".bootstrap-tagsinput").val("");
}, 1);
});
答案 0 :(得分:5)
我不确定这是错误,函数内部没有自定义代码,但在输入字段中重复选择标记,但您可以使用替代解决方案itemAdded
事件要从input
字段中删除所选值,请参阅下面的示例代码。
$('input').tagsinput({
typeahead: {
source: ['Amsterdam', 'Washington', 'Sydney', 'Beijing', 'Cairo']
},
freeInput: true
});
$('input').on('itemAdded', function(event) {
setTimeout(function(){
$(">input[type=text]",".bootstrap-tagsinput").val("");
}, 1);
});
我还注意到输入字段正在生成每个标记部分,因此this
或event
无法成为目标标记输入字段,由于动态生成输入字段,您还需要延迟从<selector>
UPDATE :$.get()
函数返回xhr
对象而不是服务器响应,因此您需要添加callback
方法来获取AJAX响应,请参阅下面的示例代码。
$('.tagsInput').tagsinput({
confirmKeys: [13, 44],
maxTags: 1,
typeahead: {
source: function(query) {
return $.get('listcategories.php').done(function(data){
/*if you have add `content-type: application/json` in
server response then no need to parse JSON otherwise,
you will need to parse response into JSON.*/
return $.parseJSON(data);
})
}
}
});
答案 1 :(得分:1)
使用$(".tags").tagsinput({
typeahead: {
afterSelect: function(val) { this.$element.val(""); },
source: keywords
}
});
选项的详细解决方案:
$result = "Replaced Word" ;
$url = "https://www.example.com/en/blah/blah";
function findFirst($findingWord, $replacingWord, $url) {
return implode($replacingWord, explode($findingWord, $url, 2));
}
echo findFirst("blah",$result, $url)