Select2 - 禁用用户输入选项

3

我试图在select2选择器中使用ajax设置数据...

但问题是,如果我输入的内容不在我的数据中,我仍然可以选择它!

enter image description here

这将使用"I don't exist"这个值... formatNoMatches() 函数似乎没有被调用...

JS代码:

$(".select2-ajax").select2({
ajax: {
url: "ajax.call.php",
type:'POST',
dataType: 'json',
data: function (params) {
  return {
    nom: params.term, // search chars
    page: params.page,
  };
},
processResults: function (data, page) {
console.log(data.data);
if(typeof(data.data)=='undefined' || !data.data || data.data.length <= 0)
  var res = [];
else
{
  var res = [];
  for (var i = data.data.length - 1; i >= 0; i--) 
  {
    res.push({"text":data.data[i]["nom"]+' '+data.data[i]["prenom"],"id":data.data[i]["id_salarie"]});
  };
}
return { results: res};
},
cache: true
 },
formatNoMatches: function( term ) {
return "<li class='select2-no-results'>' "+term+" ': Aucun  résultat</li>";
},

allowClear: true,
language: 'fr',
multiple: false,

在看完此问题后,我尝试了以下两种方法:(但仍然无法正常工作)

selectOnBlur:false,
createSearchChoice: false,



escapeMarkup: function (markup) { return markup; },
minimumInputLength: 1,
});
2个回答

8

只有在从服务器返回与用户输入的文本匹配的选项使用tags选项时,才应该发生这种情况。

由于您似乎没有使用tags,并且您的代码中也没有包含它,您可以通过覆盖createTag(以前是createSearchChoice)始终返回null来确保这不是问题。

$('select').select2({
  createTag: function () {
    // Disable tagging
    return null;
  }
});

@Kevin Brown,有没有办法完全禁用选择框中的用户输入? - lewis4u

3

将标签设置为false。例如:

$('select').select2({ tags: false });


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接