Yii jui.CJuiAutoComplete用JS函数作为源码

时间:2011-05-04 16:14:08

标签: javascript jquery-ui function autocomplete yii

我正在使用Yii框架中的zii.widgets.jui.CJuiAutoComplete小部件,其中自动完成工作正常,因为有一个URL作为建议的来源。

        $this->widget('zii.widgets.jui.CJuiAutoComplete', array(
                        'model'=>$model,
                        'source'=>$this->createUrl('ajax/autoComplete'),
[...]

但现在我需要来自javascript函数的建议,如:

'source'=>'js: autoCompleteTags();'

但它似乎没有起作用。

是否可以使用函数作为源?如何设计javascript功能? 我试过这样的事情:

function autoCompleteTags{

    var Tags= [
        "ActionScript",
        "AppleScript",
        "Asp",
        "BASIC",
        "C",
        "C++",
    ];
    return Tags;
    }

(这只是一个简单的例子。一些更复杂的代码将替换JS函数代码。但情况将是相同的)

感谢您提供任何帮助!

2 个答案:

答案 0 :(得分:0)

var Tags = [
        {
            value: "jquery",
            label: "jQuery",
        },
        {
            value: "jquery-ui",
            label: "jQuery UI",
        },
        {
            value: "sizzlejs",
            label: "Sizzle JS",
        }
    ];

答案 1 :(得分:0)

小部件代码

<?php
                        $ingredients = Ingredient::getingredients();
                        $this->widget('zii.widgets.jui.CJuiAutoComplete', array(
                            'name' => 'ingredient[]',
                            //'source' => $ingredients,
                            'options' => array(
                                'change' => 'js:function() {
                                 var context=$(this);
                                 var childingredient = $(this).val();
                                 alert(childingredient); return false;
                                 $.ajax({
                                 type:"post",
                                 url : "' . Yii::app()->createAbsoluteUrl('recipe/getgramweight') . '",
                                 data: "parentingredient=" + parentingredient,
                                 success : function (response){
                               context.parent().next().find("select").html(response);
                                 },
                                 });
                                }',
                                'minLength' => '1',
                            ),
                            'htmlOptions' => array(
                                'style' => 'height:35px;',
                                'class' => 'ingredientname'
                            ),
                        ));
                        ?> 

将值从数据库传递到小部件

<?php
    $criteria = new CDbCriteria();
    $criteria->select = "ingredient";
    $criteria->condition = 'ingredient!=""';
    $ingredients = Mymodel::model()->findAll($criteria);
    $ings = "[";
    foreach ($ingredients as $value)
    {
        $ings.='"' . $value->ingredient . '"' . ',';
    }
    $ings.="]";
    $ingredients_array = explode(",]", $ings);
    $ingredients_array[0] . "];";
    ?>



            });
        });
    </script>