0

我已经将 Flexbox 实现为课程列表的自动完成解决方案。我只是以正确的 JSON 格式向它传递了从数据库中获取的课程的完整列表。我的印象是它会在我键入时缩小匹配列表的范围,但它只是打印整个列表并突出显示匹配的字符。

我是否必须编写自己的服务器端脚本才能在键入时动态缩小结果范围?我认为传递一个列表就足够了,因为文档特别指出:“在所有调用“results.aspx”的示例中,数据是一个包含 105 个英文单词的列表”。

感谢任何人的意见。我的代码如下:

    var courseList = <?= $course_list; ?>;             

    $('#course').flexbox(courseList, {
        initialValue : '<?= $pre_fill['course']; ?>',
        watermark: 'Search for course/session name',
        paging: false,

    });

    $('#course_input').change(function() {
        $('#course_hidden').val($(this).val());

    });
4

1 回答 1

1

我也想知道这个问题。在后端创建动态数据源后,如果我复制并粘贴以下格式的数据对象:

{"results": [{"id":"key","name":"value"},...]}

过滤按计划工作。有谁知道 Flexbox 主页上“results.aspx”页面的处理方式以及它为什么/如何正常工作?

编辑:

我想我至少为我想通了。在后端,您必须编写一个查询,该查询利用传递回服务器的“q”参数。因此,您必须以任何您喜欢的方式使用命名参数“q”在后端进行自己的过滤。对我来说,我试图过滤时间,所以一个例子是:

for ($k=0;$k<=1;$k++){
        //AM PM
        for ($i=1;$i<=12;$i++){
            //hours
            for ($j=0;$j<=3;$j++){
                //minutes
                $AMPM = "AM";
                $thej = ($j*15);
                $thei = ($i);

                if($k == 1){
                    $AMPM = "PM";
                }
                if($thej == 0){
                    $thej = "00";
                }
                if($thei != 10 && $thei !=11 && $thei !=12){
                    $thei = "0".$thei;
                }
                if($q != ""){
                    if(preg_match("/$q/i", $thei.":".$thej." ".$AMPM)){
                        $subarray = array("id" => $thei.":".$thej." ".$AMPM, "name" => $thei.":".$thej." ".$AMPM);
                        $newarray[] = $subarray;
                    }
                }
                else{
                    $subarray = array("id" => $thei.":".$thej." ".$AMPM, "name" => $thei.":".$thej." ".$AMPM);
                    $newarray[] = $subarray;
                }

            }
        }
    }
    $finalarray = array("results"=>$newarray, "total"=>count($newarray));
    header('Content-type: application/json');
    print(json_encode($finalarray));

现在很乱,但我稍后会清理它。希望这对你有用!

于 2011-06-16T20:19:11.873 回答