Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQueryUIAutoComplete:如何在插入到输入字段之前从标签中剥离标签?_Jquery_Html_Autocomplete - Fatal编程技术网

jQueryUIAutoComplete:如何在插入到输入字段之前从标签中剥离标签?

jQueryUIAutoComplete:如何在插入到输入字段之前从标签中剥离标签?,jquery,html,autocomplete,Jquery,Html,Autocomplete,我使用的是jQueryUIAutoComplete,我通过ajax返回了一组项目,搜索引擎突出显示了这些项目,因此标签中已经包含了html。问题是,每次我选择一个项目时,带有html标记的值都会插入到文本框中,这当然不好。我想知道在插入文本框之前,是否还有其他方法可以从标签中删除所有标签 var cache = {}, lastXhr; $('#location_name').autocomplete({ source: function( req

我使用的是jQueryUIAutoComplete,我通过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 );
    };
添加此功能:

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

为了实现这一点,您还应该传递item.value

在选择时,它首先查找item.value,然后查找item.label

这样你就可以离开你的选择:像那样

select: function( event, ui ) {
        $('#selected_location').html(ui.item.label);                        
    }

谢谢Tak,stripHTML函数将派上用场,问题不在于$'selected_location',但是,我应该从代码中删除它。问题在于$'location\u name'的值,一旦选择下拉列表的a值,就会自动设置该值。对不起,我已经更新了答案。希望新函数能修复它,否则我有另一个想法。让我知道:谢谢Tak,这个想法很好,我可以看到它应该是有效的,不幸的是它没有。我认为问题在于,在经过更多的尝试和错误之后,我找到了解决办法:我似乎不知道如何在评论中发布好看的代码。再次感谢您的帮助函数stripHtmlLDString{return oldString.replace/]+>/ig,;}$'location_name'.bind'autocompleteclose',函数{$this.valstripHTML$this.val;};太好了,很高兴你修好了
select: function( event, ui ) {
        $('#selected_location').html(ui.item.label);                        
    }