使用 JavaScript 触发 Simple-Jekyll-Search
Trigger Simple-Jekyll-Search using JavaScript
我正在为我正在构建的网站使用 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,但那里的方法似乎也没有任何作用。
知道如何实现我想要的效果吗?
我设法通过触发按键解决了问题,但事实证明 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 帮我解决了这个问题。
我正在为我正在构建的网站使用 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,但那里的方法似乎也没有任何作用。
知道如何实现我想要的效果吗?
我设法通过触发按键解决了问题,但事实证明 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 帮我解决了这个问题。