我已经阅读了很多有关此选项的文章:向select2列表添加新值,但是我尝试的所有方法均无效。这是我的代码:
collapsible_panel(code=NULL,echo=TRUE,results="show",state="closed")
当我键入“ Plu”时,select2显示Plumbers,并且我可以添加Plumbers1234(例如),但是如果我键入“ BLABLA”(我没有以BLA开头的专业),则无法添加值BLABLA。而且我不明白为什么。 select2字段位于引导程序模式中,我已经停用了tabindex属性。
谢谢。
编辑1:
我试图退休ajax部分。没有ajax,我可以键入一个值并选择它。但是我从ajax加载数据。这是代码:
$('#profession').select2({
tags: true,
minimumInputLength: 1,
placeholder: 'Search for a profession',
createSearchChoice: function (term, data) {
if ($(data).filter(function () {
return this.text.localeCompare(term) === 0;
}).length === 0) {
return { id: term, text: term };
}
},
createTag: function (params) {
return {
id: params.term,
text: params.term,
newOption: true
}
},
templateResult: function (data) {
var $result = $("<span></span>");
$result.text(data.text);
if (data.newOption) {
$result.append(" <em>(new)</em>");
}
return $result;
},
ajax: {
url: root_url + "profession/listProfession",
type: "post",
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term
};
},
results: function (data, page) { return { results: data.results} },
processResults: function (data, page) {
return {
results: data
};
},
cache: true
}
});
请问如何将这2个代码混合在一起?
答案 0 :(得分:0)
好的,我这样解决了我的问题:
<select class="form-control" name="profession" id="profession" style="width:100%">
<?php foreach ($listProfession as $lp): ?>
<option value="<?= $lp['profession_name']; ?>"><?= $lp['profession_name']; ?></option>
<?php endforeach; ?>
</select>
在我的JS中,我只做:
// Initialisation du champ profession
$('#profession').select2({
tags: true
});
提交表单时,我会检查数据库中是否存在该职业,如果不存在,则会将其添加到数据库中。
已解决!