Как использовать автозаполнение jquery с парами ID / значение, используя скрытое поле - PullRequest
2 голосов
/ 05 июля 2011

Есть несколько вопросов, касающихся моей проблемы, но почему-то никто не может помочь мне решить ее.Я не очень знаком с javascript, не говоря уже о jquery, поэтому, пожалуйста, потерпите меня.

Как уже говорилось, у меня есть текстовое поле с автозаполнением jquery, которое прекрасно работает.Но мне нужно заполнить скрытое поле с соответствующим идентификатором выбранного значения.Вот форма:

<input name="clubname" id="clubname" type="text" />
<input name="clubid" id="clubid" type="hidden" value="" />

Для автозаполнения я использую такой массив: {id: 1, value: 'something' }.Вся страница в php получает данные из БД и записывает массив.В автозаполнение я добавил функцию акцентированного текста.Вот код:

var accentMap = {
    'á': 'a',
    'ä': 'a',
    'à': 'a',
    'â': 'a',
    'ö': 'o',
    'ô': 'o',
    'ó': 'o',
    'ò': 'o',
    'ü': 'u'
};

var normalize = function (term) {
    var ret = '';
    for (var i = 0; i < term.length; i++) {
        ret += accentMap[term.charAt(i)] || term.charAt(i);
    }
    return ret;
};

$().ready(function () {
    $('#clubname').autocomplete({
        source: function (request, response) {
            var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), 'i');
            response($.grep(clubs, function (value) {
                value = value.label || value.value || value;
                return matcher.test(value) || matcher.test(normalize(value));
            }));
        }
    });
});
});

Кажется, мне нужно использовать обработчик результатов, чтобы получить идентификатор в скрытом поле.Но как точно получить доступ к идентификатору выбранного значения ускользает от меня.

Любая помощь будет принята с благодарностью!

1 Ответ

2 голосов
/ 27 августа 2013

Надеюсь, это решение поможет вам

$JsonArray =array();
foreach($EmployeeDetailList as $value){
    $Array[label]=$value['user_name'];
    $Array[value]=$value['user_name'];
    $Array[eid]=$value['id']; //Here goes the ID of the employee
    array_push($JsonArray,$Array);
}
$JsonSerialize=json_encode($JsonArray);

Это кодирование на стороне сервера для заполнения JSON-кодированного массива

Теперь следующая часть реализует JQuery Part

$(function() {
var availableTags = <?php echo $JsonSerialize;?>;
$( "#imas" ).autocomplete({
source: availableTags,
select: function(event,ui){
    var userid = ui.item.eid;
    alert(userid); //This will alert the Employee ID . You can use it any where you want 
},
});
});
...