JQuery UI Autocomplete: как убрать теги с метки перед вставкой в ​​поле ввода? - PullRequest
2 голосов
/ 01 июля 2011

Я использую JQuery UI Autocomplete, у меня есть набор элементов, возвращаемых через ajax с условиями, выделенными поисковой системой (поэтому метка уже содержит html). Проблема в том, что каждый раз, когда я выбираю элемент, значение с HTML-тегами вставляется в текстовое поле, что, конечно, не очень приятно. Интересно, есть ли в любом случае, я могу удалить все теги с метки перед вставкой в ​​текстовое поле

        var cache = {}, lastXhr;
        $('#location_name').autocomplete({
        source: function( request, response ) {                 

            var q = request.term;
            if ( q in cache ) {
                response( cache[ q ] );
                return;
            }

            lastXhr = $.getJSON( "location_search/", {q: q}, function( data, status, xhr ) {
                $.each(data, function(i, v){
                    data[i].label = v.name + (v.address !== null ? ', ' + v.address : '');
                });

                cache[ q ] = data;

                if ( xhr === lastXhr ) {                                        
                    response( cache [q] );
                }
            });
        },      
        select: function( event, ui ) {
            $('#location_id').val(ui.item.id);
            $('#selected_location').html(ui.item.label);                        
        }
    }).data( "autocomplete" )._renderItem = function( ul, item ) {
        return $( "<li></li>" )
        .data( "item.autocomplete", item )
        .append( "<a>"+ item.label + "</a>" ) //  + + "<br>" + item.desc + "</a>"
        .appendTo( ul );
    };

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

Добавьте эту функцию:

function stripHTML(oldString) {
  return oldString.replace(/<&#91;^>&#93;*>/g, "");
}

И добавьте в свой код:

$('#location_name').change(function(){
    $(this).val(stripHTML($(this).val());
});
0 голосов
/ 24 октября 2011

Для того, чтобы сделать эту работу, вы также должны передать item.value

При выборе он сначала ищет item.value , а затем item.label

Таким образом, вы можете оставить свой выбор: вот так

select: function( event, ui ) {
        $('#selected_location').html(ui.item.label);                        
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...