以下代码来自WP Google Suggest插件
(function ($) {
$.fn.googleSuggest = function (opts) {
var services = {
youtube: 'youtube',
books: 'books',
products: 'products',
news: 'news',
images: 'img',
web: 'psy'
};
opts = $.extend({
service: 'web',
secure: false
}, opts);
opts.source = function (request, response) {
$.ajax({
url: 'http' + (opts.secure ? 's' : '') + '://suggestqueries.google.com/complete/search?callback=?',
dataType: 'jsonp',
data: {
q: request.term,
client: services['youtube'],
nolabels: 't'
},
success: function (data) {
response($.map(data[1], function (item) {
return {
value: $("<span>").html(item[0]).text()
}
}));
}
});
};
return this.each(function () {
$(this).autocomplete(opts);
});
};
$('#s').googleSuggest();
})(jQuery);
它应该在 Wordpress 搜索字段中添加 google 建议自动完成搜索选项。问题是当您选择建议的搜索字符串时,表单只是填充,但没有提交。您需要再次按 Enter 才能提交。所以,问题是如何在选择时添加提交。
谢谢你。
===============================================
编辑:我回到这段代码并取得了一些进展。我添加了以下代码:
opts.select = function(opts) {
$(this).autocomplete(opts).parents('form').submit();
}
在“返回”行之前;
return this.each(function () {
..
现在,如果我用箭头上下移动自动建议结果,然后按回车键,表单将使用正确的字符串提交。
但是,如果用鼠标单击建议,则会提交输入的原始搜索字符串。行为示例如下:
表单中输入的搜索字符串:一二自动建议:
一二三
一二三四
一二三四五
当我用鼠标单击其中一个自动建议时,比如说“一二三四”,它会进入搜索字段。表单被提交,但事实证明它是使用原始类型的字符串“一二”提交的。
感谢您提出的任何建议。
========================================
我终于设法用替代代码解决了这个问题:
var suggestCallBack; // global var for autocomplete jsonp
jQuery(document).ready(function ($) {
$("#s").autocomplete({
select: function (event, ui) {
var selectedObj = ui.item;
$("#s").val(selectedObj.value);
$('#cse-search-box').submit();
},
source: function(request, response) {
$.getJSON("http://suggestqueries.google.com/complete/search?callback=?",
{
"hl":"bg", // Language
"jsonp":"suggestCallBack", // jsonp callback function name
"q":request.term, // query term
"client":"youtube" // force youtube style response, i.e. jsonp
}
);
suggestCallBack = function (data) {
var suggestions = [];
$.each(data[1], function(key, val) {
suggestions.push({"value":val[0]});
});
suggestions.length = 10; // prune suggestions list to only 5 items
response(suggestions);
};
},
});
});
该代码由用户PSR在另一个问题中提供。它必须稍作修改。原始代码开始于:
var suggestCallBack; // global var for autocomplete jsonp
$(document).ready(function () {
对于 Wordpress,它必须从以下内容开始:
var suggestCallBack; // global var for autocomplete jsonp
jQuery(document).ready(function ($) {
结案。