Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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 将搜索框文本作为查询参数传递_Javascript_Jquery - Fatal编程技术网

Javascript 将搜索框文本作为查询参数传递

Javascript 将搜索框文本作为查询参数传递,javascript,jquery,Javascript,Jquery,我是javascript新手 当用户输入任何文本或单击搜索图标时,我需要获取搜索文本值并将该值作为查询参数传递,然后将其重定向到搜索结果页面 这里的问题是,当页面被加载时,它直接重定向到搜索结果页面,而不输入任何文本。你能告诉我我做错了什么吗 http://localhost:3000/search/searchresults.html?query=&filter=newsroom&site=allsite_all&ei=r1_search //仅当newssearch字段存在时运行函数 如

我是javascript新手

当用户输入任何文本或单击搜索图标时,我需要获取搜索文本值并将该值作为查询参数传递,然后将其重定向到搜索结果页面

这里的问题是,当页面被加载时,它直接重定向到搜索结果页面,而不输入任何文本。你能告诉我我做错了什么吗

http://localhost:3000/search/searchresults.html?query=&filter=newsroom&site=allsite_all&ei=r1_search
//仅当newssearch字段存在时运行函数
如果($('search#u banner-q_newsroom')。长度>=1){
$(“#搜索#旗帜-q#新闻室”)。在('keypress',setupNewsroomSearch())上;
}
函数setupNewsroomSearch(){
var跟踪;
如果($(“.self-service search”).length>0){
跟踪=“&ei=r2\u pt\u搜索”;
}否则{
跟踪=“&ei=r1\U搜索”;
}
重定向至搜索页面($(“#搜索横幅-q#新闻编辑室”).val(),“新闻编辑室”,“网站所有”,跟踪);
}

问题是因为您在加载时立即调用
setupNewsroomSearch()
函数,并将其返回值提供给
keypress
处理程序。相反,您需要为事件处理程序提供函数的引用,如下所示:

$("#search_banner-q_newsroom").on('keypress', setupNewsroomSearch); // Note: () removed
还要注意,
if
语句是多余的。jQuery允许在不匹配任何元素的jQuery对象上调用函数。以下是您的JS逻辑的整洁版本:

$("#search_banner-q_newsroom").on('keypress', setupNewsroomSearch);

function setupNewsroomSearch() {
  var tracking = $(".self-service-search").length > 0 ? '&ei=r2_pt_search' : '&ei=r1_search';
  redirectToSearchPage($(this).val(), 'newsroom', 'site_all', tracking);
}

成功了,谢谢!!但是,当用户单击搜索图标时,我需要调用相同的函数,我已经这样做了
$(“#search_banner-q_newsroom”)。在('keycenter',setupNewsroomSearch)$(“.search\u desktop-newsroom-submit”)。在('click',setupNewsroomSearch)
上有更好的方法吗?没有-这是最好的方法。我面临另一个问题,当我键入任何文本时,它会立即重定向到搜索页面。它应该只在按enter键后重定向。我尝试使用keyenter键,但不起作用。在这种情况下,您可以将
输入
放入
表单
中,并仅在表单提交时调用您的函数。或者您可以使用
keyup
来检测返回按键。如果你有什么问题,我会问你一个新问题。