Несколько автозаполнение не работает - PullRequest
2 голосов
/ 23 января 2012
$(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.Сингл Autocomplete работает нормально.Это не для нескольких полей ввода, а для добавления нескольких значений в одно поле ввода.

Ответы [ 2 ]

1 голос
/ 23 января 2012

Ваш код имеет несколько проблем:

  • Вы неправильно закрываете функцию $.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 для отображения некоторых статических результатов).

0 голосов
/ 23 января 2012

для нескольких автозаполнений, как вы получаете идентификатор "#names"?Вы указали один и тот же идентификатор для всех полей ввода автозаполнения.

Попробуйте задать общий класс для всех полей ввода автозаполнения, затем позвоните, как показано ниже

 $( ".autoclass" ).autocomplete({ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...