【问题标题】:Why is input form appending "?" when enter key is pressed?为什么输入表单附加“?”当输入键被按下?
【发布时间】:2011-04-30 05:10:33
【问题描述】:

我的网站是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>

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

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

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

【问题讨论】:

    标签: jquery forms input


    【解决方案1】:

    不要将点击监听器添加到按钮并将按键添加到输入,而是尝试只监听表单的 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";
    }
    

    【讨论】:

    • @UrBestFriend:您的部分代码引发了异常。我编辑了我的答案,向您展示如何解决它。
    • 很抱歉网站出现故障,但我一定会补充的。谢谢!
    • 好的,网站已备份。但是,问题仍然没有解决。
    • @UrBestFriend: filter 没有像我展示的那样修复。
    • @icktoofay 确定吗?我将它添加到所有过滤器函数中。
    【解决方案2】:

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

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

    尝试添加

    【讨论】:

      【解决方案3】:

      一种选择是在按下回车键时调用 doCoolIrisSearch() 而不是“点击”链接

      【讨论】:

      • 是的,谢谢。但这不是问题所在。而是“?”的不寻常附加到网址并重新加载。但是我找到了解决方法。
      猜你喜欢
      • 1970-01-01
      • 2014-05-31
      • 2022-01-10
      • 1970-01-01
      • 2010-11-16
      • 2013-12-24
      • 2014-05-06
      • 2016-05-01
      相关资源
      最近更新 更多