0

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

我正在动态创建另一个自动完成字段并且无法将其设置为实时:

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

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

谢谢你的帮助!

4

2 回答 2

1

我的解决方案过于简单。

每个自动完成字段必须具有唯一的名称属性。我正在使用

    <input name="family[]"/>
    <input name="family[]"/>
    <input name="family[]"/>

通过将其更改为修复:

    <input name="family_0"/>
    <input name="family_1"/>
    <input name="family_2"/>

只是有点尴尬,但值得张贴,以防其他人忽略了这样一个简单的问题。

注意:上面的代码并不准确,重点是确保您为使用 jQueryUI 自动完成功能的每个字段使用唯一名称

于 2013-04-21T04:36:41.820 回答
0

CJuiAutoComplete依赖于 jQuery UI 的自动完成功能,因此请确保 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);
于 2013-04-11T13:53:39.910 回答