Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery事件处理程序未在搜索栏上触发_Javascript_Javascript Events_Jquery - Fatal编程技术网

Javascript jQuery事件处理程序未在搜索栏上触发

Javascript jQuery事件处理程序未在搜索栏上触发,javascript,javascript-events,jquery,Javascript,Javascript Events,Jquery,我正在尝试在我的网站上实现一个搜索栏。我已经让后端处理正常工作了,我已经为搜索栏准备好了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 #ta

我正在尝试在我的网站上实现一个搜索栏。我已经让后端处理正常工作了,我已经为搜索栏准备好了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>
目前,当我用文本栏中的光标按enter键或按search按钮时,不会发生任何事情。我知道这并不是javascript错误阻止了一切的执行,因为页面上的所有其他javascript都执行得非常好

我知道搜索功能可以工作,并且文本输入上的
search\u字段
id是正确的,因为如果我向按钮添加
onclick
,并通过该按钮调用search,它将正确执行,并且始终正确地回显文本字段中的值

搜索栏位于一个单独的头文件中,因此我不必将其包含在每个页面的html中,但这不会有什么区别,因为我使用PHP包含该文件,因此它应该在文件到达用户之前就已经存在。不过为了以防万一,我已经尝试过使用
.bind
document.ready
以及
上的
.on
和匿名包装函数,但都没有用

我在控制台中没有收到任何错误消息或任何东西,它只是默默地失败了。我知道这个网站上有很多类似的问题,但我已经尝试了我能找到的每一个解决方案,其中有十几个。如果有人知道问题是什么以及如何解决它,或者仅仅是额外的测试来帮助找出失败的原因,这样我就可以缩小搜索范围,那将是非常感激的

编辑: Huangism使用我的代码创建了这个JSFIDLE,并表明代码工作正常,因此我的站点的上下文一定有什么原因导致它无法正常工作


小提琴-

使用
事件。而使用
事件。我也不是100%确定,但您可能想试试
.keydown
.keypress
。我正在我的一个网站上查看一些JS代码,我在那里按enter键,我只使用这两个键。我记得有些东西在
.keyup
上遇到了麻烦。

我在你的问题上加了一个小标题。您应该将#search_字段处理程序移动到doc ready中。在fiddle中,它可以工作,因为它已经假设doc就绪。我在小提琴上的咔哒声很管用。 您正在测试哪个浏览器

报名

code= (e.keyCode ? e.keyCode : e.which);
if (code == 13) alert('Enter key was pressed.');
这是从另一个问题得到的

这里是一个处理程序,所有处理程序都在doc-ready中,而不是假设doc-ready

它似乎在FF中工作,请在其他浏览器中测试,看看它是否工作

您的js错误可能与末尾的额外逗号有关

  $("#grid").masonry({
    itemSelector : '.entry', 
    isFitWidth : 'true',
    isResizable : 'true',   
  });

删除最后一个“true”后的逗号

处理程序中的警报根本不会显示,因此这一点也不重要。我用这个问题作为输入处理程序的指南。在主要答案下面的评论中,他们说你应该使用keyup而不是keydown,因为如果你按住它,keydown会触发多次。keypress也有同样的问题吗,还是只会发生一次?@user1623484我认为keypress只会发生一次。还可以尝试移动
.ready
中的所有内容--当您尝试绑定时,
#search_字段
可能不存在。您站点的URL是什么?这个密码似乎是正确的fiddle@Huangism完美主义。问题似乎不是我的代码本身,而是它执行的上下文。@user1623484检查我的更新答案和你的js错误这很奇怪,我尝试将doc ready添加到我的javascript文件中,但它仍然不起作用。可能是因为它在一个单独的文件中吗?似乎我的代码本身是好的,只是与导致错误的上下文有关。如果您想查看它,可以在completeset.us上看到它的实际操作。@user1623484您的站点上有一个js错误,与$(“#grid”)有关。ImagesLoaded,键入error逗号没有修复javascript错误,但我的处理程序现在正在工作!我不知道为什么它第一次不起作用,但文档就绪似乎是不同的,毕竟,它是一个奇怪的bug,当你复制粘贴某个东西足够多次后,它突然开始工作。我想逗号应该会给你一个语法错误,这会阻止它工作。如果您使用firebug,您可以转到“脚本”选项卡,重新加载文档并设置断点以查看代码停止工作的位置
  $("#grid").masonry({
    itemSelector : '.entry', 
    isFitWidth : 'true',
    isResizable : 'true',   
  });