首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用项目和id自动完成jQuery UI

使用项目和id自动完成jQuery UI
EN

Stack Overflow用户
提问于 2011-01-27 18:46:33
回答 8查看 157.5K关注 0票数 58

我有以下脚本,它与一个1维数组的工作。有没有可能让它与一个二维数组一起工作?则通过点击页面上的第二个按钮所选择的项目应该显示所选择的项目的id。

这是包含一维数组的脚本:

代码语言:javascript
复制
var $local_source = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"];
$("#txtAllowSearch").autocomplete({
    source: $local_source
});

这是按钮检查id的脚本,它是不完整的:

代码语言:javascript
复制
$('#button').click(function() {
    // alert($("#txtAllowSearch").someone_get_id_of_selected_item);
});
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-01-27 18:50:54

您需要使用ui.item.label (文本)和ui.item.value ( id)属性

代码语言:javascript
复制
$('#selector').autocomplete({
    source: url,
    select: function (event, ui) {
        $("#txtAllowSearch").val(ui.item.label); // display the selected text
        $("#txtAllowSearchID").val(ui.item.value); // save selected id to hidden input
    }
});

$('#button').click(function() {
    alert($("#txtAllowSearchID").val()); // get the id from the hidden input
}); 

编辑你还问了如何创建多维数组…

您应该能够像这样创建数组:

代码语言:javascript
复制
var $local_source = [[0,"c++"], [1,"java"], [2,"php"], [3,"coldfusion"], 
                     [4,"javascript"], [5,"asp"], [6,"ruby"]];

有关如何使用多维数组的更多信息,请单击此处:http://www.javascriptkit.com/javatutors/literal-notation2.shtml

票数 84
EN

Stack Overflow用户

发布于 2013-11-08 23:42:26

只有当我将'return false‘添加到select函数中时,我的代码才能工作。如果不这样做,则在select函数内将输入设置为正确的值,然后在select函数结束后将其设置为id值。return false解决了这个问题。

代码语言:javascript
复制
$('#sistema_select').autocomplete({

    minLength: 3,
    source: <?php echo $lista_sistemas;?> ,
    select: function (event, ui) {
         $('#sistema_select').val(ui.item.label); // display the selected text
         $('#sistema_select_id').val(ui.item.value); // save selected id to hidden input
         return false;
     },
    change: function( event, ui ) {
        $( "#sistema_select_id" ).val( ui.item? ui.item.value : 0 );
    } 
});

此外,我在change事件中添加了一个函数,因为如果用户在选择一个项目后在输入中写了一些东西或删除了项目标签的一部分,我需要更新隐藏字段,这样我就不会得到错误的(过时的) id。例如,如果我的源是:

代码语言:javascript
复制
var $local_source = [
       {value: 1,  label: "c++"}, 
       {value: 2,  label: "java"}]

用户输入ja并使用自动完成功能选择'java‘选项,我将值2存储在隐藏字段中。如果用户删除了'java‘中的一个字母,例如在输入字段中以'jva’结尾,我就不能将id 2传递给我的代码,因为用户更改了值。在本例中,我将id设置为0。

票数 18
EN

Stack Overflow用户

发布于 2014-05-16 00:03:22

我只想分享一下在我这方面起作用的东西,以防它也能帮助别人。或者,基于please上面的回答,请允许我添加另一种从这个站点派生的方法,他在该站点中使用ajax方法作为源方法

http://salman-w.blogspot.ca/2013/12/jquery-ui-autocomplete-examples.html#example-3

kicker是从你的php脚本(下面的listing.php)得到的结果“字符串”或json格式,它派生出要在自动完成字段中显示的结果集,应该如下所示:

代码语言:javascript
复制
    {"list":[
     {"value": 1, "label": "abc"},
     {"value": 2, "label": "def"},
     {"value": 3, "label": "ghi"}
    ]}

然后在自动完成方法的源代码部分:

代码语言:javascript
复制
    source: function(request, response) {
        $.getJSON("listing.php", {
            term: request.term
        }, function(data) {                     
            var array = data.error ? [] : $.map(data.list, function(m) {
                return {
                    label: m.label,
                    value: m.value
                };
            });
            response(array);
        });
    },
    select: function (event, ui) {
        $("#autocomplete_field").val(ui.item.label); // display the selected text
        $("#field_id").val(ui.item.value); // save selected id to hidden input
        return false;
    }

希望这能帮到你。万事如意!

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

https://stackoverflow.com/questions/4815330

复制
相关文章

相似问题

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