多个自动完成功能无效

时间:2012-01-23 16:48:55

标签: jquery jquery-ui codeigniter autocomplete jquery-ui-autocomplete

$(function() {
    function split( val ) {
        return val.split( /,\s*/ );
    }
    function extractLast( term ) {
        return split( term ).pop();
    }
    $( "#names" ).autocomplete({
        source: function(request, response) {
            $.ajax({ url: "<?php echo site_url('update/suggestions'); ?>",
            data: { term: extractLast( request.term )},
            dataType: "json",
            type: "POST",
            success: function(data){
                response(data);
            },
            focus: function() {
                // prevent value inserted on focus
                return false;
            },
            select: function( event, ui ) {
                var terms = split( this.value );
                // remove the current input
                terms.pop();
                // add the selected item
                terms.push( ui.item.value );
                // add placeholder to get the comma-and-space at the end
                terms.push( "" );
                this.value = terms.join( "," );
                return false;
            }
        });
    },
    minLength: 2
    });
});

以上代码正在替换现有选择,而不是将新选择添加到现有选择中。这是在Codeigniter中。单个自动填充功能正常。 这不适用于将多个值添加到单个输入字段的多个输入字段。

2 个答案:

答案 0 :(得分:1)

您的代码有几个问题:

  • 您没有正确关闭$.ajax功能和source选项功能。
  • minLength: 2也放错了地方。
  • 由于以前的问题,你得到了太多的右括号/括号。

例如你有:

    source: function(request, response) {
        $.ajax({ url: "<?php echo site_url('update/suggestions'); ?>",
        ...
        success: function(data){
            response(data);
        },
    // missing closings
    focus: function() {

应该是:

    source: function(request, response) {
        $.ajax({
            url: "<?php echo site_url('update/suggestions'); ?>",
            ...
            success: function(data) {
                response(data);
            }
        });   // closes $.ajax function
    },    // closes the 'source' function
    focus: function() {


使用正确的语法检查此 DEMO 。它工作正常(我已经为ajax添加了一个错误处理程序来显示一些静态结果)。

答案 1 :(得分:0)

对于多个自动补充,您如何获得ID“#names”? 您是否为所有自动填充输入字段指定了相同的ID。

尝试为所有自动填充输入字段提供一个公共类,然后调用如下

 $( ".autoclass" ).autocomplete({