我正在尝试在我的网站上实现搜索栏。我已经让后端处理正常工作,并且我已经为搜索栏准备了 html 和 css,我剩下要做的就是让我的 javascript 触发搜索执行。这是搜索栏的html:
<div id="search_field_container">
<input type="text" name="search_field" id="search_field" maxlength="100" placeholder="Search by item name or #tag" value="Search by item name or #tag" onclick="value=''" />
<button id="search" name="search_button">s</button>
</div>
我想要做的是设置 jquery 事件处理程序来触发一个称为搜索的 JavaScript 函数,当用户在文本栏获得焦点时按下回车键或单击搜索按钮时。但是,我似乎绝对无法触发事件处理程序。这是我的javascript:
//Search function
$(document).ready(function(){
console.log("In anonymous function.");
$("#search").on('click', function(event){
alert("In click handler");
search();
});
});
$("#search_field").bind('keyup', function(event){
alert("In keyup handler");
if(event.keyCode == 13){
alert("In enter handler");
search();
}
});
function search(){
alert("Something happened!");
var searchTerm = $("#search_field").val();
alert("You're trying to search for "+searchTerm);
}
目前,当我在文本栏中使用光标按 Enter 或按搜索按钮时,什么都没有发生。我知道这不是阻止执行所有内容的 javascript 错误,因为页面上的所有其他 javascript 都可以正常执行。
我知道搜索功能有效,并且至少search_field
文本输入上的 id 是正确的,因为如果我将一个添加onclick
到按钮并通过它调用搜索,它会正确执行并且它总是正确地回显来自文本字段的值。
搜索栏位于一个单独的头文件中,因此我不必将其包含在每个页面的 html 中,但这应该没有什么不同,因为我将文件包含在 PHP 中,所以它应该已经到位在文件甚至到达用户之前。以防万一,我已经尝试过使用.bind
anddocument.ready
如您所见,以及.on
匿名包装函数,但无济于事。
我没有在控制台或任何东西中收到任何错误消息,它只是默默地失败。我知道这个网站上有很多类似的问题,但我已经尝试了我能找到的所有解决方案来解决其中的十几个问题。如果有人知道问题是什么以及如何解决它,或者甚至只是额外的测试来帮助找出失败的原因,以便我可以缩小搜索范围,那将不胜感激。
编辑:Huangism 使用我的代码创建了这个 JSfiddle,并表明该代码可以正常工作,所以我的网站的上下文肯定有一些东西导致它无法运行。