Php 在wordpress中从数据库自动完成输入字段

Php 在wordpress中从数据库自动完成输入字段,php,jquery,wordpress,autocomplete,Php,Jquery,Wordpress,Autocomplete,当用户在字段中输入时,我想在WordPress中显示来自数据库的建议。我写了下面的代码,但它并没有完全按照我想要的方式工作 实际上,我通过php将数据从数据库中提取到一个空白的div名称primary php的输出显示如下所示 ,'' 我用jquery删除黑色的“”,并替换为“to”,之后输出将如下所示 “hdfgh”、“ddd”、“Zanga”、“Susana”、“ghjgf”、“1212”、“2”、“dfhg”、“vcn”、“xcbxxb”、“Beathe”、“Corredor”、“cvcx

当用户在字段中输入时,我想在WordPress中显示来自数据库的建议。我写了下面的代码,但它并没有完全按照我想要的方式工作

实际上,我通过php将数据从数据库中提取到一个空白的div名称primary php的输出显示如下所示
,''

我用jquery删除黑色的“”,并替换为“to”,之后输出将如下所示 “hdfgh”、“ddd”、“Zanga”、“Susana”、“ghjgf”、“1212”、“2”、“dfhg”、“vcn”、“xcbxxb”、“Beathe”、“Corredor”、“cvcxg”、“2”、“ghjk”、“41级”


如果我在源代码中以静态方式传递它,比如jquery中的源代码:[“option1”、“option2”、“option3”],那么它的性能会很好,但是当我通过变量传递它时,比如source:[value15],那么它将显示一个选项,就像下面显示的所有选项一样 “hdfgh”、“ddd”、“Zanga”、“Susana”、“ghjgf”、“1212”、“2”、“dfhg”、“vcn”、“xcbxxb”、“Beathe”、“Corredor”、“cvcxg”、“2”、“ghjk”、“41级” 但是我想在我输入input like hdf时单独显示它,然后建议选项将显示上述选项中的hdfgh

有人能帮我吗

jQuery(文档).ready(函数(){
jQuery(“#primary”).text(jQuery(“#primary”).text().replace(/\'/g,“);
jQuery(“#primary”).text(jQuery(“#primary”).text().replace(/\,“/g”);
var value14=jQuery(“#primary”).text();
var值15=值14;
jQuery(函数(){
jQuery(“#water_92”).autocomplete({
资料来源:[value15],
选择:功能(事件、用户界面){
jQuery(event.target).val(ui.item.value);
返回false;
},
最小长度:1
});
});
});


我注意到,您正在将输入值作为源传递,这将毫无用处,因为这在第一次加载页面时基本上是未设置的,并且也没有调用ajax句柄来执行任何数据库操作。 要解决此更改,请按如下所述更改代码:

jQuery(document).ready(function($) {
    function splitsource( val ) {
        return val.split( /,\s*/ );
    }
    function extractLast( term ) {
        return splitsource( term ).pop();
    }
    $('#primaryy').on('keypress', function(event) {
        if ( (event.keyCode === $.ui.keyCode.TAB || event.keyCode === $.ui.keyCode.ENTER) && $( this ).autocomplete( "instance" ).menu.active ) {
            event.preventDefault();
        }
        $('#primaryy').text( jQuery('#primaryy').text().replace(/\'/g, '"') );
        $('#primaryy').text( jQuery('#primaryy').text().replace(/\, ""/g, '') );
        $(this).autocomplete({
            source: function( request, response ) {
                var re = $.ui.autocomplete.escapeRegex(request.term);
                var matcher = new RegExp("^" + re, "i");
                $.getJSON( ajax_object.ajax_url+"?action=search_names&term="+re, function(data){
                    response($.map(data, function (v, i) {
                            return {
                                label: v.value,
                                value: v.value,
                                id: v.id
                            };
                        }));
                } );
            },
            search: function() {
                // custom minLength
                var term = extractLast( this.value );
                if ( term.length < 2 ) {
                    return false;
                }
            },
            focus: function() {
                // prevent value inserted on focus
                return false;
            },
            select: function (event, ui){
                //Perform any custom action that you might want on the keyword being selected.                          
            },
            minLength: 3,
            classes: {
                "ui-autocomplete": 'primaryy-custom-combobox-menu'
            }
        });
    });
});
jQuery(文档).ready(函数($){
函数拆分源(val){
返回val.split(/,\s*/);
}
功能提取最后(学期){
返回splitsource(term.pop();
}
$('#primary')。on('keypress',函数(事件){
如果((event.keyCode==$.ui.keyCode.TAB | | event.keyCode===$.ui.keyCode.ENTER)&&$(this.autocomplete(“实例”).menu.active){
event.preventDefault();
}
$(“#primary').text(jQuery(“#primary').text().replace(/\'/g'”);
$(“#primary').text(jQuery(“#primary').text().replace(/\,”“/g'));
$(此)。自动完成({
来源:功能(请求、响应){
var re=$.ui.autocomplete.escapeRegex(request.term);
var matcher=newregexp(“^”+re,“i”);
$.getJSON(ajax\u object.ajax\u url+”?action=search\u names&term=“+re,函数(数据){
响应($.map)(数据、函数(v、i){
返回{
标签:v.value,
价值:v.value,
id:v.id
};
}));
} );
},
搜索:函数(){
//自定义最小长度
var项=提取时间(此值);
如果(术语长度<2){
返回false;
}
},
焦点:函数(){
//防止在焦点上插入值
返回false;
},
选择:功能(事件、用户界面){
//对所选关键字执行任何自定义操作。
},
最小长度:3,
课程:{
“ui自动完成”:“主要自定义组合框菜单”
}
});
});
});

请注意,您应该注册一个ajax句柄作为搜索名称,在那里您应该执行必要的数据库操作,并将结果返回到js文件中的autocomplete函数。

感谢您的回复Fahan,实际上我将php的数据提取到一个空白的div name primary中。php的输出显示如下ow,、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、如果我在类似sorce的源代码中以静态方式传递它:[“option1”、“option2”、“option3”]在jquery中,那么它将执行得很好,但是当我通过变量传递它时,它将显示一个选项,就像上面所显示的所有选项一样,希望您能看到所有选项再次看到上面的描述,谢谢您这样做
value15=value15.split(,”);
并作为
value15
而不是
[value15]