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

时间:2011-04-30 05:10:33

标签: jquery forms input

我的网站为here:在搜索输入表单中输入文字时,页面会刷新并附加“?”到网址。

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

$(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属性。这是正确的版本:

    <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>

希望其他人认为这有帮助。

3 个答案:

答案 0 :(得分:3)

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

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

更简单。

修改:我尝试使用Chrome优秀的网络检查器来调试您的代码,有时您会filter调用id而不是id有时候。您可以通过更改此行来解决此问题:

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

对此:

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

答案 1 :(得分:0)

这是因为您忘记在输入标记中添加名称属性

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

尝试添加

答案 2 :(得分:0)

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