嵌入在超链接中的输入按钮在ie8中不起作用

时间:2013-02-19 09:27:07

标签: jquery html internet-explorer

在ie9中,此代码有效;

   <span id="ForwardNavigationEnabled" style="display:inline;">
        <a class="imagelink" href="@Url.Action("Details", "Subcontractor", new { id = Model.Navigator.NextPageId })">
            <input id="btnNext" type="button" value="Next >|" />
        </a>
        <a class="imagelink" href="@Url.Action("Details", "Subcontractor", new { id = Model.Navigator.LastPageId })">
            <input id="btnLast" type="button" value="Last >>|" />
        </a>
    </span>

也就是说,当您单击按钮时,会触发超链接中的href事件。 在ie8中,超链接被忽略,而按钮的点击事件则被触发,而不是任何地方。

ie8的一个修复是给按钮一个点击事件并以这种方式导航。另一个解决方案是用按钮图像替换按钮。

但是有更简洁的解决方案吗?

2 个答案:

答案 0 :(得分:2)

<input>(或任何表单控件)嵌套在<a>元素中是无效的HTML。

如果你想要一个链接。使用链接,只链接。如果您希望它看起来像一个按钮,请使用CSS。

答案 1 :(得分:2)

使用jQuery的快速解决方案:

$("a > button").on('click', function() { 
    location.href = $(this).closest("a").attr("href");
}); // fixed

有关该主题的更多信息

w3c链接标签内的按钮没有问题,所以它只是另一个MS子标准。

要获得您正在寻找的效果,您可以放弃<a>标记,并为每个按钮添加一个简单的事件处理程序,以便将浏览器导航到所需的位置。

然而;常规链接的工作原理是这样的:

  • 用户可以即时识别链接,并了解他们导航到其他页面
  • 搜索引擎可以将它们标识为链接并关注它们
  • 屏幕阅读器可以将它们识别为链接并为其用户提供适当的建议
  • 您还添加了一个完全不必要的要求,即启用JavaScript以执行基本导航;这是网络的一个基本方面,我认为这种依赖是不可接受的。

如果需要,您可以使用背景图片或背景颜色,边框和其他CSS技术设置链接的样式,使它们看起来像按钮,但在封面下,它们应该是普通的链接。

更多?

Button inside of anchor link works in Firefox but not in Internet Explorer?