CJuiAutoComplete
CJuiAutoComplete显示一个自动完成框。
CJuiAutoComplete封装了JUI
autocomplete插件。
使用这个部件,你可以在视图里面插入以下代码:
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
'name'=>'city',
'source'=>array('ac1', 'ac2', 'ac3'),
// additional javascript options for the autocomplete plugin
'options'=>array(
'minLength'=>'2',
),
'htmlOptions'=>array(
'style'=>'height:20px;'
),
));
通过配置options属性,
您可以指定需要传递给JUI autocomplete插件。
如果需要选择(name-value pairs),
请参阅JUI autocomplete说明。
通过配置source属性,
你可以指定搜索位置每个项目的自动完成选项。
如果source是一个数组,这个列表会自动完成。
你也可以通过设置sourceUrl检索从一个Ajax响应的自动完成的项目。
公共属性
属性类型描述定义在
string
actions的ID的前缀。
当微件在CController::actions中声明了
动作提供者,可以为其动作的ID指定前缀以区别
于别的微件或控制器。当微件用于控制器
的视图中时,必须配置同样的前缀。
string
和这个小物件相关的属性。
这个名称可能包含中括号(例如‘name[1]’),用于搜集表格式的数据输入。
mixed
主题的CSS文件名。默认是‘jquery-ui.
array
JUI组件中HTML标签的属性设置。
string
返回此微件的ID。如果需要的话,将生产一个新的ID并将其返回。
string
输入框名称。如果model没有设置,这个必须设置。
array
the 初始的JavaScript需要传递给JUI插件的选项。
mixed
主要JUI的JavaScript的文件名。默认是‘jquery-ui.
string
包含所有JUI JavaScript文件的根目录。
如果没有设置这个属性(默认),Yii will publish the JUI package included in the zii release and use
that to infer the root script URL.
mixed
微件使用的皮肤的名称。默认为“default”。
如果此属性设置为false,微件将不会有皮肤被使用。
mixed
自动完成框应该从条目里选择。这可以是
一个本地数据的数组
一个字符串,指定一个URL,返回JSON数据的条目。
一个JavaScript回调。在这种情况下请确保你回调名称的前缀“JS:”。
CJuiAutoComplete
mixed
autocomplete项目将返回的JSON数据的URL。
CHtml::normalizeUrl()把这个属性转换成一个合适的URL,那么就会接受这个属性。
这个属性设置好之后,原source属性就可以忽略掉。
CJuiAutoComplete
string
JUI主题的名字。默认是‘base’。确保在themeUrl下有这样一个目录,
其名称是这个属性的值相同(区分大小写)。
string
包含所有JUI的主题文件夹的根目录。
如果没有设置这个属性(默认), Yii will publish the JUI package included in the zii release and use
that to infer the root theme URL.
string
返回包含此微件所需的视图文件的路径。
属性详细
source属性
public mixed $source;
自动完成框应该从条目里选择。这可以是一个本地数据的数组
一个字符串,指定一个URL,返回JSON数据的条目。
一个JavaScript回调。在这种情况下请确保你回调名称的前缀“JS:”。
sourceUrl属性
public mixed $sourceUrl;
autocomplete项目将返回的JSON数据的URL。
CHtml::normalizeUrl()把这个属性转换成一个合适的URL,那么就会接受这个属性。
这个属性设置好之后,原source属性就可以忽略掉。
方法详细
run()
方法
public void run()
源码: framework/zii/widgets/jui/CJuiAutoComplete.php#71 (
public functionrun()
{
list($name,$id)=$this->resolveNameID();
if(isset($this->htmlOptions['id']))$id=$this->htmlOptions['id'];
else$this->htmlOptions['id']=$id;
if(isset($this->htmlOptions['name']))$name=$this->htmlOptions['name'];
if($this->hasModel())
echoCHtml::activeTextField($this->model,$this->attribute,$this->htmlOptions);
else
echoCHtml::textField($name,$this->value,$this->htmlOptions);
if($this->sourceUrl!==null)$this->options['source']=CHtml::normalizeUrl($this->sourceUrl);
else$this->options['source']=$this->source;$options=CJavaScript::encode($this->options);$js="jQuery('#{$id}').autocomplete($options);";$cs=Yii::app()->getClientScript();$cs->registerScript(__CLASS__.'#'.$id,$js);
}
运行这个部件。
这个方法注册必要的javascript并渲染相应的HTML代码。