我正在使用Simple-Jekyll-Search库来建立我正在建设的网站。
我希望有一个功能,用户可以点击按钮(想象文本输入下方的标签或类别按钮),并自动使用相应的标签名称填充搜索框,然后执行搜索。
我设法通过简单地将搜索输入的值设置为我想要的文本来实现它的第一部分,然后我试图触发各种关键事件但不幸的是,这并不是似乎触发了搜索。当然,搜索框正常工作,当我手动输入时会显示结果。
查看该库的源文件,this似乎是触发搜索的相关部分,但据我所知,我应该只需要向搜索发送一个keyup事件输入以触发搜索。
function registerInput() {
options.searchInput.addEventListener('keyup', function (e) {
if (isWhitelistedKey(e.which)) {
emptyResultsContainer()
search(e.target.value)
}
})
}
但是,以下代码不起作用(它使用我的文本填充文本输入,但没有搜索结果出现,没有错误消息):
function tagButtonClick(text) {
document.getElementById('search-input').value = text;
$('#search-input').trigger(jQuery.Event('keyup', {which: 65}));
}
我也看了this other answer,但那里的方法似乎也没有做任何事情。
知道如何达到我想要的效果吗?
答案 0 :(得分:0)
我设法解决问题不是通过触发按键,但事实证明,Simple-Jekyll-Search API允许编程搜索:
// If this is your search object
window.simpleJekyllSearch = new SimpleJekyllSearch({
searchInput: document.getElementById('search-input'),
resultsContainer: document.getElementById('results-container'),
json: '{{ site.baseurl }}/search.json',
searchResultTemplate: '<li><a href="{url}" title="{desc}">{title}</a></li>',
noResultsText: 'No results found'
})
// Use this to search
setTimeout(() => {
window.simpleJekyllSearch.search('t')
}, 2000)
这完美地实现了我想要的东西。感谢christian-fei帮我解决这个问题。