我过去曾使用过jQuery的自动完成插件,但从未通过Yii将其作为小部件实现。
我正在动态创建另一个自动填充字段,但无法将其设置为活动:
$('input.ui-autocomplete-input').live("keydown.autocomplete", function() {
$(this).autocomplete();
});
或者只是在创建它时调用.autocomplete()才能使其工作。有什么想法为什么这会通过Yii不同而不仅仅是使用插件本身,或者我错过了一些非常简单的东西?
感谢您的帮助!
答案 0 :(得分:1)
我的解决方案过于简单。
每个自动填充字段必须具有唯一的名称属性。我正在使用
<input name="family[]"/>
<input name="family[]"/>
<input name="family[]"/>
通过将其更改为:
来修复 <input name="family_0"/>
<input name="family_1"/>
<input name="family_2"/>
只是有点尴尬,但值得张贴以防万一其他人忽视这样一个简单的问题。
注意:上面的代码并不准确,重点是确保为使用jQueryUI自动完成的每个字段使用唯一名称。 < / p>
答案 1 :(得分:0)
CJuiAutoComplete
依赖于jQuery UI的autocomplete所以请确保为您在动态创建字段的视图注册了jQuery UI:
Yii::app()->clientScript->registerCoreScript("jquery.ui");
另请确保为source
电话提供了带有自动填充标记的autocomplete()
参数。以下工作对我来说很好:
<?php
$source = array(
"hello",
"test"
);
?>
<div id="wrapper">
</div>
<?php
Yii::app()->clientScript->registerScript("autocomplete", "
$('<input />')
.addClass('ui-autocomplete-input')
.appendTo($('#wrapper'));
$('input.ui-autocomplete-input').autocomplete({
'source': " . CJavaScript::encode($source) . "
});
", CClientScript::POS_READY);