首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Select2:修剪输入的文本,如果为空,则阻止发送Ajax请求

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

Stack Overflow用户
提问于 2016-11-06 06:28:18
回答 3查看 2.3K关注 0票数 2

我正在使用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
}

编辑:

我忘了说我已经尝试过这样的东西:

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-06 08:49:28

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

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

我试图从data函数内部获取minimumInputLength的值,但是无法获得,所以您应该将这个数字写两次。

更新

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

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

票数 5
EN

Stack Overflow用户

发布于 2021-01-13 15:35:24

您可以只重写transport选项,在验证失败时返回null,否则返回original function code

这对我很管用。

{
    data: function (params) {
        return {
            q: params.term
        };
    },
    transport: function (params, success, failure) {
        if(params.data.q.trim().length < 3) {
            return null;
        }
        //the original function code:
        var $request = $.ajax(params);

        $request.then(success);
        $request.fail(failure);

        return $request;
    },
}
票数 0
EN

Stack Overflow用户

发布于 2019-06-24 08:57:22

您必须使用自己的函数覆盖传输方法,并对参数执行任何操作,然后决定通过XHR、$.ajax或axios处理请求。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40443903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档