我正在处理一个带有 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();"),
),
有人对如何实现这一目标有任何其他建议吗?
正确的语法是:
'sourceUrl'=>array(
"company/aclist", "id"=>"js:$('#".CHtml::activeId($model,'company_id')."').val();")
),
但恐怕有问题。我几乎可以肯定"js:$(.."(将被视为字符串,因此不会被评估。所以我的建议是实施这里提供的解决方案。
该解决方案在这里适用,因为"sourceUrl"调用CHtml::normalizeUrl((,而CHtml::createUrl((又调用CHtml::createUrl((。您需要将"单击"事件更改为"更改"。当然,还有其他一些修改需要完成,但我希望你能解决它们。