为什么输入表单在按下回车键时附加"?"?

  • 本文关键字:回车 表单 jquery forms input
  • 更新时间 :
  • 英文 :


我的网站在这里:当在搜索输入表单中输入文本时,页面会刷新并在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();
    };   
}); 

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

    <form name="searchForm">
    <input type="text" name="coolIrisSearch" id="coolIrisSearch" onfocus="this.value=''" />
    <input type="submit" value="search" onclick="doCoolIrisSearch();return false;" />
    </form>

而这个版本会导致url附加"? "coolIrisSearch="并重新加载页面。

<form name="searchForm">
<input type="text" name="coolIrisSearch" id="coolIrisSearch" onfocus="this.value=''" />
</form>

不要为按钮添加点击监听器,也不要为输入添加按键监听器,尝试只监听表单的submit事件。

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

简单多了。

编辑:我试着用Chrome的优秀的Web检查器调试你的代码,似乎你有时用id调用filter,有时没有id。您可以通过修改这一行来修复这个问题:

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

:

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

因为你忘了给输入标签添加name属性

<input name='search' type='text' />

试着添加

一个选项是在按enter键时调用doCoolIrisSearch()而不是导致"click"链接

相关内容

  • 没有找到相关文章

最新更新