Select2:修剪输入的文本,如果为空 - 防止发送 Ajax 请求

Per*_*ika 2 ajax jquery trim jquery-select2-4 select2

我正在使用 Select2 和 Ajax 来加载远程数据(建议)。

一切正常,但有一个问题:当用户只输入空格(按空格键)时 - 正在发送 Ajax 请求。

我怎样才能防止这种情况?另外,我想在发送之前修剪条款。

$(".js-data-example-ajax").select2({
  placeholder: "Select... ",
  minimumInputLength: 3,
  ajax: {
    url: "/my-site/tags",
    dataType: 'json',
    data: function (params) {
        return {
            q: params.term
        };
    },
    processResults: function (data) {
        return {
            results: data
        };
    },
    cache: true
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我忘了提到我已经尝试过这样的事情:

        data: function (params) {
            if (params.term.trim().length  < 2) {
                return;
            }
            return {
                q: $.trim(params.term)
            };
        },
Run Code Online (Sandbox Code Playgroud)

并且仍然发送 GET (Ajax) 请求。

Dek*_*kel 5

您可以使用该data函数来检查搜索的长度term(修剪后),如果长度 < 3 则返回:

data: function (params) {
  if (params.term.trim().length  < 3) {
    throw false;
  }
  return {
    q: params.term.trim()
  };
},
Run Code Online (Sandbox Code Playgroud)

我试图minimumInputLengthdata函数内部获取 的值但不能,所以你应该使用这个数字写两次。

更新

我能够停止请求的唯一方法是throwdata函数内部进行异常处理。我知道这可能不是一个好的选择,但它有效。

我还发现了一个关于这个问题的公开票:https : //github.com/select2/select2/issues/1637 所以我想(目前)还没有这样的选择。