Yii JUI自动完成 - 将javascript传递给sourceUrl

时间:2012-05-16 18:35:48

标签: php jquery-ui autocomplete yii

我正在使用包含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();"),
),

任何人对如何完成此任务有任何其他建议吗?

1 个答案:

答案 0 :(得分:0)

正确的语法是:

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

但我担心会出现问题。我几乎可以肯定“js:$(..”会被视为一个字符串,所以它不会被评估。所以我的建议是实现提供的解决方案here

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