0

コースのリストのオートコンプリート ソリューションとして Flexbox を実装しました。DB から取得したコースの完全なリストを適切な 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 に答える