Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 超链接中的提交按钮_Html_Forms - Fatal编程技术网

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.