jquery - 为什么按回车键时输入表单会附加 "?"?

标签 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();
    };   
}); 

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

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

虽然此版本会导致网址附加“?coolIrisSearch=”并重新加载页面。

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

希望其他人觉得这有帮助。

最佳答案

不要向按钮添加点击监听器,向输入添加关键内容,而是尝试仅监听表单的 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";
}

关于jquery - 为什么按回车键时输入表单会附加 "?"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5839707/

相关文章:

javascript - 为什么按escape键不能改变输入值

javascript - 用于选择 JavaScript 函数的 html 文本

javascript - 在jquery中获取某些数据

javascript - 在另一个 View 中加载数据后加载部分 View (或多个 View )

javascript - 提交前验证表单

javascript - jQuery - 使用表单外的选项卡进行表单验证

javascript - 如何无限循环 jQuery 画廊

javascript - 正则表达式从一行中提取单词

forms - 如何在 Microsoft Access 的表达式中引用当前表单?

javascript - 标签必须有关联的控件