【发布时间】:2013-05-18 14:02:04
【问题描述】:
我有两个字段,第一个称为customer name,另一个称为customer id。怎么做才能达到这样的效果,当我在第一个文本字段中输入客户姓名时,第二个字段(可能是下拉列表)会在找到姓名后立即显示他/她的ID。
那么,谁能给我一个简单的例子来实现这个目的。非常感谢。
【问题讨论】:
我有两个字段,第一个称为customer name,另一个称为customer id。怎么做才能达到这样的效果,当我在第一个文本字段中输入客户姓名时,第二个字段(可能是下拉列表)会在找到姓名后立即显示他/她的ID。
那么,谁能给我一个简单的例子来实现这个目的。非常感谢。
【问题讨论】:
创建一个包含所有客户名称的一维数组,例如array('Bob', 'Sally', 'Fred');
然后您可以通过执行以下操作同时使用 CJuiAutoComplete 和 CHtml::dropDownList:
$this->widget('zii.widgets.jui.CJuiAutoComplete',array(
'attribute'=> 'Customer_name',
'model' => $model,
'sourceUrl' => array('customer/aclist2'),
'options'=>array(
'minLength'=>'1',
'select' => "js: function(event, ui){ $('#".CHtml::activeId($model, 'Customer_id').").val(ui.item.value); }"
),
'htmlOptions'=>array(
'style'=>'height:20px;',
),
));
echo CHtml::activeLabel($model, 'Customer_id');
echo CHtml::activeDropDownList(
$model,
'Customer_id',
CHtml::listData(Customer::model()->findAll(), 'Customer_name', 'Customer_id'
));
您需要调整模型名称(客户)和属性(客户名称、客户 ID)以匹配您的名称。用我自己的数据测试。
【讨论】:
Customer_Customer_id 并且字段的名称必须是这样格式 - Customer[Customer_id]。否则模型无法将其识别为其属性之一。当您使用 dropDownList 时,不会自动为您设置 id 和 name。您可以使用 activeDropDownList 解决此问题。我将在上面更新我的代码。您还需要调整 CJuiAutocomplete,所以我也会编辑该部分