【问题标题】:window.location.href not workingwindow.location.href 不工作
【发布时间】:2013-08-20 11:24:05
【问题描述】:

我的网站是http://www.collegeanswerz.com/。我正在使用导轨。该代码用于搜索大学。我希望用户能够输入大学名称,点击回车,然后被带到网址,而不是看到搜索结果(如果用户正确输入了名称。如果不是,我想显示搜索结果) .当我尝试让它工作时,我使用“a”和“stackoverflow.com”作为占位符。

我正在使用基于此的 window.location.href:How to redirect to another webpage in JavaScript/jQuery?

javascript

$("#search_text").submit(function() {
    if ($("#search_field").val() == "a")
    {
        window.location.href = "http://stackoverflow.com";
        alert('worked');
    }
});

布局文件

<%= form_tag("/search", :method => 'get', :id => 'search_text', :class => 'form_search') do -%> 
    <div id="search"> <%= search_field_tag :search, params[:search], :placeholder => 'enter college', :id => "search_field", :class => 'input-medium search-query' %></div> 
<% end -%>

static_pages_controller.rb

def search
  @colleges = College.search(params[:search])
end

警报正在运行,它告诉我 if 语句中的内容应该正在执行。但它把我带到了正常的搜索结果而不是 stackoverflow.com。这是为什么呢?

【问题讨论】:

  • 我看到我投了反对票。你能告诉我为什么吗?乍一看,我认为这个问题没有任何问题。
  • 我没有否决这个问题,但至少,您应该显示表单的 HTML。
  • 好的,我会编辑问题。
  • 显示生成的 HTML,而不是 Ruby 代码。

标签: jquery ruby-on-rails window.location


【解决方案1】:

您的代码运行后,浏览器仍在提交表单。

return false; 添加到处理程序以防止这种情况发生。

【讨论】:

  • 谢谢你,你是对的,它成功了。这里也解决了这个问题 (stackoverflow.com/questions/6094130/…)。在我问这个问题之前我没有意识到这一点。
  • 你刚刚救了我的命。
  • 但是如果我返回false,提交功能就没有用了。
【解决方案2】:

试试这个

`var url = "http://stackoverflow.com";    
$(location).attr('href',url);`

或者你可以这样做

// similar behavior as an HTTP redirect
window.location.replace("http://stackoverflow.com");

// similar behavior as clicking on a link
window.location.href = "http://stackoverflow.com";

并在函数调用结束时添加 return false

【讨论】:

  • 我可以知道我投反对票的原因吗? @亚当泽纳
  • 你在得到那些反对票很久之后才添加了正确的答案(返回 false)。
  • @Juhana 正在编辑我的答案,同时得到了那些反对票。但是在投反对票之前添加评论是否有意义,因为这些反对票会让我想现在就回答任何问题
  • 如果它让你在回答之前思考......任务完成。
  • @ArihantGodha:给出错误或错误的答案会使答案被否决。稍后对其进行编辑,使其说明另一个答案已经说过的内容(有意或无意)不会扭转这种情况。当您编辑您的答案使其成为另一个答案的副本时,请将其删除。
【解决方案3】:

请检查您使用的是 // 而不是 \\ 错误,如下所示

Wrong:"http:\\stackoverflow.com"

Right:"http://stackoverflow.com"

【讨论】:

    【解决方案4】:

    如果有人在使用 return false; 后遇到问题。然后使用下面的。

    setTimeout(function(){document.location.href = "index.php"},500);
    

    【讨论】:

      猜你喜欢
      • 2012-04-24
      • 2021-05-12
      • 2023-01-13
      • 2019-11-28
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      相关资源
      最近更新 更多