Отправка переменных на сервер с помощью MagicSuggest

Я использую этот замечательный плагин JQuery для обработки автозаполнения на текстовых полях, я получил все работает с помощью этого сценария:

        var ms1;
        $(document).ready(function() {
                ms1 = $('#ms1').magicSuggest({
                data: 'http://punctis.com/app_dev.php/ajax/autocompletefeed/1/city',
                sortOrder: 'name',
                minChars: 2,
                maxResults: false,
                allowFreeEntries: false,
                selectionPosition: 'right',
                groupBy: 'utenti',
                maxDropHeight: 200
            });
        });

И этот HTML:

<form name="email_form">
  <input id="test_normalValue" name="test_normalValue" type="text" class="input-large">
  <input id="ms1" name="ms1" type="text" class="input-large">
</form>

Но когда я отправляю или получаю форму, никакое значение не отправляется, только test_normalValue. Кто-нибудь тоже сталкивался с этой проблемой?

PS: Согласно этой теме эта функциональность присутствует начиная с 1.1.2 (я использую 1.2.3)

1 ответ

Решение

Вам необходимо добавить свойство name в вашу конфигурацию:

    var ms1;
    $(document).ready(function() {
            ms1 = $('#ms1').magicSuggest({
            data: 'http://punctis.com/app_dev.php/ajax/autocompletefeed/1/city',
            sortOrder: 'name',
            minChars: 2,
            maxResults: false,
            name: 'ms1',
            allowFreeEntries: false,
            selectionPosition: 'right',
            groupBy: 'utenti',
            maxDropHeight: 200
        });
    });

и вы должны получить значение в $_POST['ms1'], которое на самом деле будет массивом городских идентификаторов.

[РЕДАКТИРОВАТЬ] Если вам нужны названия городов вместо идентификаторов городов, вы можете указать значение valueField в свойстве конфигурации и установить для него значение "name", например:

    var ms1;
    $(document).ready(function() {
            ms1 = $('#ms1').magicSuggest({
            data: 'http://punctis.com/app_dev.php/ajax/autocompletefeed/1/city',
            sortOrder: 'name',
            valueField: 'name',
            minChars: 2,
            maxResults: false,
            name: 'ms1',
            allowFreeEntries: false,
            selectionPosition: 'right',
            groupBy: 'utenti',
            maxDropHeight: 200
        });
    });

Таким образом, компонент будет использовать имена в качестве идентификаторов, а не сами идентификаторы.

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

Другие вопросы по тегам