2015-02-25 4 views
0

Я хочу добавить разные автозаполнения для разных входов. Например, у меня есть следующие два поля ввода:jQuery UI автозаполнение с различными входами

<input type="text" id="firstname" name="firstname" placeholder="Max" required /> 
<input type="text" id="lastname" name="lastname" placeholder="Mustermann" required /> 

Так что я в настоящее время добавить различные autocompletes следующим образом:

$(document).ready(function() { 
    $('#firstname').autocomplete({ 
     source: 'autocomplete_firstname.php', 
     minLength: 1 
    }); 
    $('#lastname').autocomplete({ 
     source: 'autocomplete_lastname.php', 
     minLength: 1 
    }); 
}); 

Это отлично работает для меня, но, может быть, есть лучший способ, как параметр? Так что я могу использовать только один класс в полях автозаполнения и только один .php-файл, который возвращает тот же результат?

ответ

0

попробовать это:

$(document).ready(function() { 
var focused_inp; 

    $('#firstname,#lastname').on('focus',function(){ focused_inp = $(this).prop('name');}).autocomplete({ 
     source: function(req, res){ 
     $.ajax({ 
     url: "autocomplete.php", 
     dataType: "jsonp", 
     data: {action: focused_inp, data: request.term }, 
     success: function(result) { res(result) } 
    }) }, 
     minLength: 1, 

    }); 

}); 
+0

, который работает, но вы можете мне сказать, почему ** Источник: «автозаполнения. php? action = '+ $ (this) .prop (' name '), ** не работает, но ** source:' autocomplete.php? action = firstname ', ** работает? – Fox

+0

Я отредактировал мое сообщение, пожалуйста, проверьте его. – Firuza

+0

- это функция результата? – Fox

0

Если вы хотите, чтобы отвязать ваше автозаполнение код создания экземпляра из входной разметки, вы можете установить источник автозаполнения в качестве атрибута данных.

<input type="text" data-source="foo.php"/> 
<input type="text" data-source="bar.php"/> 

Затем в create случае, вы можете посмотреть на этот атрибут и установить его в качестве источника. Этот код теперь применяется во многих местах, так как вы не должны пройти source параметр напрямую, когда виджет создается:

$('input').autocomplete({ 
    minLength: 1, 
    create: function() { 
     var $this = $(this), 
      source = $this.data('source'); 
     if (source) { 
      $this.autocomplete('option', 'source', source); 
     } 
    } 
}); 

$('input').first().autocomplete('option', 'source'); 
// → 'foo.php' 

$('input').last().autocomplete('option', 'source'); 
// → 'bar.php' 
Смежные вопросы