0

我正在处理一个带有 2 个自动完成小部件的表单。第一个小部件获取公司名称并填充表单上的各种其他项目:

<?php $this->widget('zii.widgets.jui.CJuiAutoComplete', array(
    'attribute'=>'company_name',
    'model'=>$model,
    'sourceUrl'=>array('company/aclist'),
    'options'=>array(
        'minLength'=>'2',
        'select'=>'js: function(e,u){
            $("#'.CHtml::activeId($model,'company_address').'").val(u.item.address);
            $("#'.CHtml::activeId($model,'company_phone').'").val(u.item.phone);
            $("#'.CHtml::activeId($model,'company_id').'").val(u.item.id);
        }',
    ),
    'htmlOptions'=>array(
        'size'=>45,
        'maxlength'=>45,
    ),
 ));?>

这完美地工作。第二个小部件非常相似,只是它旨在获取与该公司相关的联系人。如何将company_id值传递给第二个自动完成?

这是我尝试过的,但没有奏效:

'sourceUrl'=>array(
    'company/aclist',
    array("id"=>"js:$('#".CHtml::activeId($model,'company_id')."').val();"),
),

任何人对如何实现这一点有任何其他建议吗?

4

1 回答 1

0

正确的语法是:

'sourceUrl'=>array(
     "company/aclist", "id"=>"js:$('#".CHtml::activeId($model,'company_id')."').val();")
),

但恐怕有问题。我几乎可以肯定 "js:$(.." 将被视为一个字符串,所以它不会被评估。所以我的建议是实现这里提供的解决方案。

该解决方案在这里适用,因为'sourceUrl' 调用CHtml::normalizeUrl(),而后者又调用CHtml::createUrl()。您需要将“点击”事件更改为“更改”。当然还有一些其他的修改需要做,但我希望你能解决它们。

于 2012-05-16T20:03:05.537 回答