Html 超链接中的提交按钮
我从来没有想到在锚定Html 超链接中的提交按钮,html,forms,Html,Forms,我从来没有想到在锚定中放置是有效的标记 但奇怪的是,如果您将其输入到,它会验证 当用户单击submit按钮时会发生什么?如果不同的浏览器随心所欲,这种设置是否不可预测,或者是否有明确的规则规定预期的行为?这样做有用吗?简而言之,它不是有效的HTML。它可能不应该是有效的,正如Richard指出的,有趣的是它在HTML5中得到了解决 尝试运行与HTML5相同的代码。HTML5定义通过给出错误纠正了这一点:元素输入不能显示为元素的后代 The element input must not appe
中放置
是有效的标记
但奇怪的是,如果您将其输入到,它会验证
当用户单击submit按钮时会发生什么?如果不同的浏览器随心所欲,这种设置是否不可预测,或者是否有明确的规则规定预期的行为?这样做有用吗?简而言之,它不是有效的HTML。它可能不应该是有效的,正如Richard指出的,有趣的是它在HTML5中得到了解决
尝试运行与HTML5相同的代码。HTML5定义通过给出错误纠正了这一点:元素输入不能显示为元素的后代
The element input must not appear as a descendant of the a element.
这是因为您在同一位置显示两个按钮,那么应该优先选择哪个按钮操作?从本质上讲,您对用户隐藏了一个按钮操作,这就像根本没有第二个按钮一样好
在中有更多关于这方面的信息,因此答案如下:)
它可能不会在HTML5中验证,它可能会在HTML<5中验证,但我仍然好奇到底发生了什么。事实证明,这很符合逻辑。按钮事件首先触发,然后冒泡到链接事件。然后触发链接事件。你可以在这里玩:
它在IE8、FF4、Chrome 10中也有同样的功能。浏览器之间的行为不一致
回答可能对JavaScript很有帮助,但是考虑一下用脚本编写的HTML。 看到js小提琴了吗
在这里,我刚刚更改了问题的html,以便链接将页面导航到www.microsoft.com,表单提交到www.google.com 点击Firefox4.0、IE9或Opera11中的按钮,就会出现Google页面。在Chrome10.0或Safari4.0中执行此操作,您将获得Microsoft页面这可能就是HTML5不允许它的原因。不过它是有效的。有趣的是,他们已经在HTML5中解决了这个问题。。。但是你的第一点是,它不是有效的HTML,这是不正确的。我认为它仍然应该被认为是有效的,因为如果你填充了锚,那么你仍然可以单击它以及里面的按钮。这取决于你如何解释指导方针,声明嵌套链接是非法的,这个例子可以被视为非法的(只是没有添加到XHTML的验证器算法中)好的测试,一些额外的传播信息,第一次在eventGood测试中通过jquery方法了解到了这一点,但是在我的回答中看到了反例。+1:很好,我甚至没有想过检查这一点。现在的问题是,jquery是否跨浏览器规范了这种行为?John Resig在吗?:)@Milimetric-jQuery无法修复JavaScript被禁用的任何问题。@Richard-right,当然,我是在继续我的回答的思路(见下面我的JSFIDLE)。 The element input must not appear as a descendant of the a element.