使用CJUIautocomplete根据算法填充字段(Yii Framework)

时间:2012-07-02 14:29:00

标签: jquery yii

我已经到处搜索了这个问题的答案,但找不到任何我想做的清楚的例子。我过去曾在本机JavaScript(getDocumentiD)中提供此功能,但我想知道在Yii框架中执行此操作的最简单方法。

我想要做的是使用CJuiAutoComplete类,通过添加,分割或多重显示从表单中先前输入的字段给出的值来自动填充特定字段。我希望在更改值时动态更新。如果有人可以概述适当的步骤或示例,或指向指南的链接,我将非常感谢!

我还希望在我的表单中为某个特定字段实现类似的功能。我想做的是给出前一个字段的输入,例如(国家名称),查找我的数据库中该模型所有相应的行,其中包含从表单中先前输入的相同的国家,取一个整数的平均值所有这些行的列,并在窗体上自动填充另一个字段。

如果有人能提供任何明确的例子,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为CJuiAutoComplete不会做你希望做的事情,因为该类是http://jqueryui.com/demos/autocomplete/的包装,它基本上在你填写表单时提供建议,而不是根据其他表单输入计算值

对于您的问题,一般概述是您要在视图中将AJAX调用附加到列表框中,这类似于:

echo CHtml::listBox('country', '', array('country1', 'country2'),
    array('ajax' => array(
                'type' => 'POST',
                'url' => Controller :: createUrl('/controller/parseData'),
                'dataType'=>'json',
                'success'=>'function(data) {
                    $("#secondField").val(data.returnValue);
                }'
                ),
        'id'=>'countrySelect',
    )
);

上面的代码创建了一个附带AJAX的列表框。在你的控制器中,你会有类似的东西:

public function actionParseData() {
   if (Yii::app()->request->isAjaxRequest) { 
       $country = $_POST['country'];
       // php code to parse the submitted data, 
       // i.e.. query the DB and run your calcuations
       // and finally return the data, using a line of the form:
       echo CJSON::encode(array('returnValue'=>$valueYouCalculated));
    }
}

然后在调用AJAX中的成功函数时发生自动更新,并且将更新具有id“secondField”的页面部分以具有您返回的值。