如何使用 Jquery Autocomplete 填写表单值

Posted

技术标签:

【中文标题】如何使用 Jquery Autocomplete 填写表单值【英文标题】:How do I use Jquery Autocomplete to ffill out form values 【发布时间】:2021-08-15 05:22:57 【问题描述】:

我有 3 个文本框,名称、机构和提供者。

我想在名称框中输入最多 2 个字符并返回与这两个字符有关的所有数据集信息。返回数据,但我想选择其中一个值并填充其他两个文本框。

这是我的 Jquery:

 $("#dataset_name").autocomplete(
                minLength: 2,
                source: function (request, response) 

                    $.ajax(

                        url: key +  "/Search/GetDatasets/",
                        dataType: "html",
                        type: "GET",
                        data:  search: $("#dataset_name").val() ,
                        success: function (data) 
                            response($.map(JSON.parse(data), function (item) 
                                 
                                return  label: item, value: item 
                            ))
                        ,
                        error: function (xhr, status, error) 
                            alert("error");
                        
                    );
                

这是我的用户界面:

<div class="section_header2">Dataset</div>
                        <table>
                            <tr>
                                <td>
                                    <span class="display-label">Data Provider:</span>
                                </td>
                                <td>
                                    @Html.TextBoxFor(model => model.data_provider, new  @class = "input-box" )
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <span class="display-label">Dataset Name*:</span>
                                </td>
                                <td>
                                    @Html.TextBoxFor(model => model.dataset_name, new  @class = "input-box" )
                                </td>
                            </tr>
                             
                            <tr>
                                <td>
                                    <span class="display-label">Institution:</span>
                                </td>
                                <td>
                                    @Html.TextBoxFor(model => model.institution, new  @class = "input-box" )
                                </td>
                            </tr>
                        </table>
            );

这是我的控制器方法:

  public async Task<JsonResult> GetDatasets(string search)
        
            //Hosted web API REST Service base url  

            string BaseUrl = ConfigurationManager.AppSettings["baseServiceUrl"];
            List<Dataset_Search> dataset = new List<Dataset_Search>();
            List<string> datasets;
            var client = new HttpClient();

            //Passing service base url  
            client.BaseAddress = new Uri(BaseUrl);

            client.DefaultRequestHeaders.Clear();
            //Define request data format  
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            //Sending request to find web api REST service resource Get All Dataset using HttpClient  
            HttpResponseMessage Res = await client.GetAsync("api/Datasets/GetDataset_Search");

            if (Res.IsSuccessStatusCode)
            
                //Storing the response details recieved from web api   
                var DatasetResp = await Res.Content.ReadAsStringAsync();

                //Deserializing the response recieved from web api and storing into the Employee list  
                dataset = JsonConvert.DeserializeObject<List<Dataset_Search>>(DatasetResp);
            


            var datasets2 = dataset.Where(x => x.Name.ToLower().StartsWith(search.ToLower())).Select(y => new  y.Name, y.Provider, y.Institution ).ToList();
            //datasets = dataset.Where(x => x.Name.ToLower().StartsWith(search.ToLower())).Select(y => y.Name ).ToList();
            return Json(datasets2, JsonRequestBehavior.AllowGet);
        
    

这里是从服务器返回的原始数据,取自 ajax 中的数据对象:

response($.map(JSON.parse(data), function (item) 

这是执行 .autocomplete 时屏幕的样子...按我想要的方式工作:

我要做的是在我做出选择后填写名称、机构和提供者。

【问题讨论】:

【参考方案1】:

我弄清楚了它是如何工作的,我有自动完成部分工作,但我没有设置选择功能,这就是让它工作的原因:

  $("#dataset_name").autocomplete(
                minLength: 2,
                source: function (request, response) 

                    $.ajax(

                        url: key +  "/Search/GetDatasets/",
                        dataType: "html",
                        type: "GET",
                        data:  search: $("#dataset_name").val() ,
                        success: function (data) 
                            response($.map(JSON.parse(data), function (item) 
                                
                                return  id: item.Dataset_ID, value: item.Name 
                            ))
                        ,
                        error: function (xhr, status, error) 
                            alert("error");
                        
                      

                    );
                ,
                select: function (event, ui) 
                       
                    $.ajax(
                        cache: false,
                        type: "GET",
                        url: key + "/Search/SelectDataset/",
                        data:  id: ui.item.id ,
                        success: function (data) 
                            
                            $('#dataset_name').val(data.Name)
                            $("#data_provider").val(data.Provider)
                            $("#institution").val(data.Institution)
                        
                    );

                
            );

        );

我需要使用另一个 Ajax 并检索我想在文本框中填写的数据集。

【讨论】:

以上是关于如何使用 Jquery Autocomplete 填写表单值的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 Jquery Autocomplete 和 JSP 时设置自动完成输入框的值

Jquery UI Autocomplete - 从外部源绘制数据时如何使用 Accent Mapping

如何使 jQuery AutoComplete 功能在 Durandal 中工作?

如何制作 jquery ui-autocomplete 功能?

如何将 Jquery Autocomplete 设置为特定值并使用 JSON 对象的数据源显示它的标签

将值设置为jquery(ver 1.7)autocomplete组合框