【问题标题】:Button with location.href doesn't work in Firefox带有 location.href 的按钮在 Firefox 中不起作用
【发布时间】:2010-01-20 13:50:47
【问题描述】:

我有一个用于搜索的文本框和一个重定向到文本框给定值的按钮。除了完全忽略该功能的 Firefox 3 外,它运行良好。任何想法为什么以及如何解决它?我已经尝试过 window.location 而不是 location.href,但它在除 Firefox 之外的所有主流浏览器中都能正常工作。

我的代码:

<%=Html.TextBox("search", Html.Encode(ViewData["search"])) %>    
<input type="button" onclick="location.href='<%= Url.Content("~/Authorized/Accounts/0/1/") %>'+search.value" value="Search" />

编辑

这是生成的代码:

<input id="search" name="search" type="text" value="" /> 
<input type="button" onclick="window.location='/Authorized/Accounts/0/1/'+search.value" value="Search" />

【问题讨论】:

  • 除了 ASP.NET 代码之外,您还应该发布实际生成的 HTML 代码

标签: javascript asp.net-mvc firefox


【解决方案1】:
<%=Html.TextBox("search", Html.Encode(ViewData["search"])) %>    
<input type="button" onclick="location.href='<%= Url.Content("~/Authorized/Accounts/0/1/") %>'+document.getElementById('search').value;" value="Search" />

如果您使用的是 jQuery:

<%=Html.TextBox("search", Html.Encode(ViewData["search"])) %>    
<input type="button" onclick="location.href='<%= Url.Content("~/Authorized/Accounts/0/1/") %>'+$("#search").val();" value="Search" />

【讨论】:

    【解决方案2】:

    search.value 正在寻找一个名为“搜索”的 JavaScript 变量,而不是您的表单字段。

    你应该使用document.getElementById('search').value

    【讨论】:

    • 在我的测试中,我发现 search.value 在 Firefox 和 IE 中返回了预期的值。
    • 您的原始 html 在 FF3.5 中工作,但它也在控制台上产生了一个明确的错误消息:警告:在全局范围内由 ID/NAME 引用的元素。请改用 W3C 标准 document.getElementById()。源文件:file:///tmp/tst.html 我将从修复非标准 javascript 开始(不管它在您的测试中是否有效,它仍然需要清理。现在是 2010 年,我们仍在收获“好处”由 IE 6 和更早的 Netscape 浏览器播种,这些浏览器接受损坏的 html,但仍然产生结果,产生了一代设计师,他们通过损坏的垃圾是正确的。
    【解决方案3】:

    我不确定为什么您的代码在 FF3 中不起作用,但我通过将域添加到 URL 的开头并删除前导斜杠来让它起作用。

    因此,如果您可以在该位置添加域或使用相对路径,它应该可以工作。例如,生成的行可能如下所示:

    &lt;input type="button" onclick="window.location='http://www.example.com/Authorized/Accounts/0/1/'+search.value" value="Search" /&gt;

    【讨论】:

    • 我也想过这个,但是我希望能够把它放在不同的域上,而不必重构所有的外观。不过谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 2017-12-19
    • 1970-01-01
    • 2014-08-08
    • 2011-08-23
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多