在Yii中动态创建的CJuiAutoComplete不起作用

时间:2013-04-11 11:57:52

标签: jquery-ui yii yii-components

我过去曾使用过jQuery的自动完成插件,但从未通过Yii将其作为小部件实现。

我正在动态创建另一个自动填充字段,但无法将其设置为活动:

$('input.ui-autocomplete-input').live("keydown.autocomplete", function() {
    $(this).autocomplete();
});

或者只是在创建它时调用.autocomplete()才能使其工作。有什么想法为什么这会通过Yii不同而不仅仅是使用插件本身,或者我错过了一些非常简单的东西?

感谢您的帮助!

2 个答案:

答案 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);