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