我正在使用包含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();"),
),
任何人对如何完成此任务有任何其他建议吗?
答案 0 :(得分:0)
正确的语法是:
'sourceUrl'=>array(
"company/aclist", "id"=>"js:$('#".CHtml::activeId($model,'company_id')."').val();")
),
但我担心会出现问题。我几乎可以肯定“js:$(..”会被视为一个字符串,所以它不会被评估。所以我的建议是实现提供的解决方案here。
这个解决方案适用于此,因为'sourceUrl'调用CHtml :: normalizeUrl(),后者又调用CHtml :: createUrl()。您需要将“点击”事件更改为“更改”。当然还有一些其他的修改需要完成,但我希望你能解决它们。