Php 在wordpress中从数据库自动完成输入字段
当用户在字段中输入时,我想在WordPress中显示来自数据库的建议。我写了下面的代码,但它并没有完全按照我想要的方式工作 实际上,我通过php将数据从数据库中提取到一个空白的div名称primary php的输出显示如下所示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
,'' 我用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]