当按下回车键时,为什么输入表格附加“?”?

我的网站在这里:当在搜索输入表单中输入文本时,页面会刷新并附加“?” 到url。

但是,当按下搜索链接时,一切正常。 我真的很难以理解为什么它会附加“?” 因为我没有在任何地方包含该代码。 预期的行为是单击链接而不是刷新页面。

$(document).ready(function() { $("#coolIrisSearch").keydown(function(e) { if(e.keyCode === 13) { $("#searchbutton").click(); return false; } }); doCoolIrisSearch = function() { cooliris.embed.setFeedURL( 'http%3A%2F%2Fpipes.yahooapis.com%2Fpipes%2Fpipe.run%3FSearch%3D'+encodeURIComponent($('#coolIrisSearch').val())+'%26_id%3D5f4545ce4062c36e4c5d9a8763b3167e%26_render%3Drss' ); filter(); }; }); 

好的找到了答案。 表单字段非常严格。 您无法删除“提交”输入字段并将其更改为链接。 否则,输出将执行之前的操作 – 附加“?” 和第一个输入字段的name属性。 这是正确的版本:

  

虽然这个版本会导致url追加“?coolIrisSearch =”并重新加载页面。

 

希望别人觉得这很有帮助。

不要将点击监听器添加到按钮和关键事物到输入,而是尝试只听取表单的submit事件。

 $("#searchForm").submit(function() { doCoolIrisSearch(); return false; }); 

更简单。

编辑:我尝试使用Chrome的优秀Web Inspector调试您的代码,有时您似乎正在使用id调用filter ,有时没有id 。 您可以通过更改此行来解决此问题:

 document.getElementById(id).className += " active"; 

对此:

 if(id) { document.getElementById(id).className += " active"; } 

那是因为您忘记在输入标记中添加name属性

  

尝试添加

一个选项是在按下enter时调用doCoolIrisSearch(),而不是导致“单击”链接