用户输入3个数据后如何显示select2

how to display select2 after user input 3 data

我这里有select2显示用户邮箱数据,但是数据可以上万,导致我的select2很慢,有没有办法让用户输入3个字母后才显示?

这是我的脚本 select2

$('#add_form').find("#list_user").select2({
                              width: "100%",
                              placeholder: "Choose User by Email...",
                              ajax: {
                                url: "{{ route('getuser') }}",
                                dataType: "json",
                                delay: 250,
                                processResults: function(data) {
                                  return {
                                    results: $.map(data, function(obj) {
                                      return {
                                        id: obj.email,
                                        text: obj.email
                                      };
                                    })
                                  };
                                },
                              }
                            });

这是我的控制器

public function getUser(Request $request)
        {
            $search = $request->input('term', '');
            $user = DB::table('users.users')->where('email','LIKE','%'.$search.'%')
                    ->get();
            return response()->json($user);
        }

您的问题的唯一解决方案是只获取一些记录并显示它们。然后从select需要调用controller重新搜索数据并显示。

为此,您可以将查询更改为

user = DB::table('users.users')->where('email','LIKE','%'.$search.'%')->take(10)->get()

对于可搜索的 select 你可以参考 this link and this JSFiddle link