1

CJuiAutomcoplete ウィジェットを使用しています。

すべて正常に動作しますが、提案リストボックスに複数の列を表示したいと思います。

JSON構造の「値」オプションの文字列を連結しますが、複数の列が必要です。

Jquery UI が li および ul html タグを使用していることがわかりました...

列を含むリスト ボックスを作成する方法がわかりません。

何か案が ?

よろしくお願いします

ニコラス

編集:必要なものを見つけました... http://jqueryui.com/demos/autocomplete/#custom-data

しかし、私は yii を使用しているため、ブロックを追加する方法がわかりません。


 .data( "autocomplete" )._renderItem = function( ul, item ) {
      return $("<li></li>" )
     .data( "item.autocomplete", item )
     .append( "<a>" + item.label + "<br>" + item.desc + "</a>" )
     .appendTo( ul ); };

私はjQueryについてほとんど何も知らないので、「.data」メソッドが何をするのかわかりません。

よろしく...

4

1 に答える 1

2

組み込みのハンドラーをオーバーライドすることで、この問題を解決しました。

$controller->widget('zii.widgets.jui.CJuiAutoComplete', array(
    ...
    'source'    => 'js: foreignKeyQuery',  //overriding
    'options'   => array( //passing params from Yii view script
        'delay' => 700,
        'sourceUrl' => Yii::app()->request->baseUrl.'/ajax/search/',
    ),
    ...
));

そして、このような JS ハンドラー(View スクリプトに含めることを忘れないでください) :

function foreignKeyQuery(request, response)
{
    var params = {
        'term': request.term,  //default param
        'protest': 'Pussy Riot'  //free params
        ...
    };  //Of course you may get params in any way, and using "this"

    $.ajax(this.options.sourceUrl, {
            type: 'post',
            dataType: 'json',
            data: params,
            success: response
        });
}

フレームワークは単なる手段です。JS の使用を無制限に制限する人はいません。

于 2012-08-08T19:59:37.450 に答える