0

我已经到处寻找答案,但找不到任何明确的例子来说明我想做的事情。过去我一直致力于在本机 JavaScript (getDocumentiD) 中提供此功能,但我想知道在 Yii 框架中执行此操作的最简单方法。

我想做的是使用 CJuiAutoComplete 类,通过添加、划分或多重播放从表单中先前输入的字段中给出的值来自动填充特定字段。我希望它随着值的变化而动态更新。如果有人可以概述适当的步骤或示例,或指向指南的链接,我将不胜感激!

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

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

4

1 回答 1

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”的部分将更新为具有您返回的值。

于 2012-07-02T16:51:06.110 回答