【问题标题】:Json + Jquery Autocomplete + php: Selecting the information displayed in the search options when the Json has multiple itemsJson + Jquery Autocomplete + php:当Json有多个项目时,选择搜索选项中显示的信息
【发布时间】:2012-10-09 09:13:14
【问题描述】:

基本上我得到了一个 PHP 文件,它返回一个包含不同结果的数组(PHP 发送数组并且接收良好)。现在我希望 JQuery 自动完成仅按字段“名称”而不是其他字段搜索,并且它仅在建议结果时显示字段“名称”。但是一旦被选中,我希望它将所有结果数组放入页面中。

目前它正在显示所有在建议的搜索中提取所有数组并且只在 HTML 中放入“名称”的内容。

我认为我要做的是捕获 JQ 中的变量,然后只搜索名称

有人可以帮我吗?谢谢你

PHP(工作)

                foreach ($this->get_charities() as $r){

                         $return = array (  'Name' => $r['Name'],
                                            'Contact' => $r['Contact'],
                                            'Postcode' => $r['Postcode'],
                                            'Phone' => $r['Phone'],
                                            'Fax' => $r['Fax'],
                                            'Website' => $r['Website'],                             
                                            'Email' => $r['Email'],
                                        );
                }

        return json_encode($return);    

JS

  <script>
        $(function() {
            function log( message ) {
                $( "<div>" ).text( message ).prependTo( "#log" );
                $( "#log" ).scrollTop( 0 );
            }

            $( "#birds" ).autocomplete({
                source: "search.php",
                minLength: 2,
                select: function( event, ui ) {
                    log( ui.item ?
                        "Selected: " + ui.item.value + " aka " + ui.item.id :
                        "Nothing selected, input was " + this.value );
                }
            });
        });
        </script>

【问题讨论】:

    标签: php javascript jquery ajax jquery-ui


    【解决方案1】:

    你需要在php中设置数组如下

    $return = array (  
        'value'=> $r['Name'],
        'label'=> $r['Name'],
        'Contact' => $r['Contact'],
        'Postcode' => $r['Postcode'],
        'Phone' => $r['Phone'],
        'Fax' => $r['Fax'],
        'Website' => $r['Website'],                             
        'Email' => $r['Email'],
    );
    

    现在,仅自动完成对名称值的搜索,您还可以将自定义值放入选择函数中

    $( "#birds" ).autocomplete({
        source: "search.php",
        minLength: 2,
        select: function( event, ui ) {
                alert(ui.item.Phone);   <-- here you can get all your custom values.
            alert(ui.item.Contact); <-- here you can get all your custom values.
    
            log( ui.item ?
                "Selected: " + ui.item.value + " aka " + ui.item.id :
                "Nothing selected, input was " + this.value );
        }
    });
    

    【讨论】:

    • 警报中显示未定义(ui.Phone)
    • 哦..对不起。我的错误应该是警报(ui.item.Phone)。编辑了我的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    相关资源
    最近更新 更多