【问题标题】:jquery autocomplete: works for first value, how to enable it for next?jquery autocomplete:适用于第一个值,如何为下一个启用它?
【发布时间】:2010-12-21 00:29:53
【问题描述】:

我正在使用自动完成功能,因此用户可以轻松地在输入中输入数据,如下所示:

 <?
$a = new etiqueta(0, '');
$b = $a->autocomplete_etiquetas();
?>
<script type="text/javascript">
    function cargar_autocomplete_etiquetas(){
        $("#tags").autocomplete({
            source: [<? echo $b; ?>]
        });
    }
</script>

$a = $b 它是一个 array,其结果类似于:'help','please',i','need','to,'be能够', '选择下一项',' 自动完成';

我检查了 ui 文档,但它不适合我的源方法.. 有什么想法吗? 我正在尝试这样(使用 Bugai13 aportation 编辑):

 <?
$a = new etiqueta(0, '');
$b = $a->autocomplete_etiquetas();
?>
<script type="text/javascript">
    function cargar_autocomplete_etiquetas(){
    $("#tags").autocomplete({
        source: [<? echo $b; ?>],
        multiple: true,
        multipleSeparator: ", ",
        matchContains: true
    });
}

</script>

但我不知道该怎么做.. 有什么想法吗?是自动完成中的 .push 和 .pop 函数吗?还是我应该定义他们?

再次感谢!

PS:我对这个网站上瘾了! PS:来吧,伙计们,我认为答案对很多人来说都是非常有用的 PS:paypal可以打赏吗?

【问题讨论】:

    标签: php jquery jquery-ui jquery-ui-autocomplete


    【解决方案1】:

    我已经使用以下方法为带有“,”分隔符的标签进行多个自动完成工作,希望这对您有所帮助:

    我的全部代码都可以工作。在我的例子中解析函数项它只是 json 数组,尝试添加解析方法:

       $("#txtTags").autocomplete(UrlFactory.TAGS_AUTOCOMPLETE_URL, {
        matchContains: true,
        width: 320,
        max: 10,
        highlight: false,
        multiple: true,
        multipleSeparator: ", ",
        scroll: true,
        scrollHeight: 300,
        dataType: "json",
        parse: function (data) {
            var result = Result.fromJson(data);
    
            var items = result.getJson("Tags");
            var arr;
            if (items != null)
                arr = items.split(",");
            return $.map(arr, function (row, i) {
                return {
                    data: row,
                    value: row,
                    result: row
                }
            });
        },
        onItemSelect: function () {
    
        },
        formatItem: function (data, i, n, value) {
            if (value != null) {
                value = ltrim(value);
                value = rtrim(value);
            }
            return value;
        }
    });
    

    所以,你需要这样的东西:

    function cargar_autocomplete_etiquetas(){
        $("#tags").autocomplete({
            source: [<? echo $b; ?>],
            multiple: true,
            multipleSeparator: ", ",
            matchContains: true
        });
    }
    

    【讨论】:

    • aaaaaaaaaaaaaaalmost... :( 自动完成仍然有效,但它没有在选择时添加“,”,并且它没有为下一个标签启用自动完成...无论如何谢谢..
    • 哦,伙计,我似乎以某种方式修改了插件以获得多选工作。如果需要,我可以发送我的 js,您可以与您的版本进行比较。也尝试先添加解析函数。
    • 添加解析函数是什么意思?任何信息都会有帮助:)谢谢! -EDIT-哦,我明白了,但我没有使用 json...
    【解决方案2】:

    echo $b; 打印什么?如果 $b 确实是一个 PHP 数组,我希望您需要 echo implode(',', $b) 甚至 echo '"' . implode('", "', $b) . '"'; 之类的东西来完成这项工作。

    编辑:(当然我只是假设您使用的是 PHP,但如果它像 PHP 一样 &lt;?s 和像 PHP 一样的 $s...)

    【讨论】:

    • 自动完成工作,正如我所说,$b 包含我的标签中的一个字符串,用逗号分隔......我想要的是当用户通过自动完成(或不输入)选择标签时,他有机会继续输入并添加另一个带有自动完成功能的标签(这是我不知道该怎么做)无论如何谢谢!
    • 啊,对了!我根本没有从你的问题中得到那个!但显然@Bugai13 做到了,而且他的回答看起来不错,所以我就留给你吧:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 2011-08-25
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多