说我有:
<form method="get" action="something.php">
<input type="text" name="name" />
</form>
<input type="submit" />
我如何在表单外提交那个提交按钮,我认为在HTML5中有一个提交的动作属性,但我不确定这是否完全跨浏览器,如果不是的话,有没有办法这样做?
说我有:
<form method="get" action="something.php">
<input type="text" name="name" />
</form>
<input type="submit" />
我如何在表单外提交那个提交按钮,我认为在HTML5中有一个提交的动作属性,但我不确定这是否完全跨浏览器,如果不是的话,有没有办法这样做?
当前回答
这是一个相当可靠的解决方案,它包含了迄今为止最好的想法,也包括了我对奥弗林强调的问题的解决方案。不使用javascript。
如果你关心IE的向后兼容性(甚至Edge 13),你不能使用form="your-form"属性。
使用一个标准的提交输入,并在表单外添加一个标签:
<form id="your-form">
<input type="submit" id="your-form-submit" style="display: none;">
</form>
注意使用display: none;。这是故意的。使用bootstrap的.hidden类与jQuery的.show()和.hide()冲突,并且在bootstrap 4中已弃用。
现在只需为你的提交添加一个标签,(风格为bootstrap):
<label for="your-form-submit" role="button" class="btn btn-primary" tabindex="0">
Submit
</label>
与其他解决方案不同,我还使用tabindex -设置为0 -这意味着我们现在与键盘选项卡兼容。添加role="button"属性为它提供了CSS样式的游标:指针。瞧。(看这把小提琴)。
其他回答
通过在组件的定义中添加form="yourFormId",可以告诉表单<form>标记之外的外部组件属于它。
在这种情况下,
<form id="login-form">
... blah...
</form>
<button type="submit" form="login-form" name="login_user" class="login-form-btn">
<B>Log In</B>
</button>
... 仍然会愉快地提交表单,因为您为它分配了表单名称。表单认为按钮是它的一部分,即使按钮在标签之外,这需要没有javascript来提交表单(这可以是bug,即表单可以提交,但引导错误/验证我无法显示,我测试)。
如果你会使用jQuery,你就可以使用这个
<form method="get" action="something.php" id="myForm">
<input type="text" name="name" />
<input type="submit" style="display:none" />
</form>
<input type="button" value="Submit" id="myButton" />
<script type="text/javascript">
$(document).ready(function() {
$("#myButton").click(function() {
$("#myForm").submit();
});
});
</script>
所以,底线是创建一个按钮像提交,并把真正的提交按钮在表单(当然隐藏它),并通过jquery通过点击“Fake Submit”按钮提交表单。希望能有所帮助。
在HTML5中,有form属性。基本上
<form id="myform" method="get" action="something.php">
<input type="text" name="name" />
</form>
<input type="submit" form="myform" value="Update"/>
你的<按钮>将需要有这2个属性:type="submit"和form="form_id"如果它在表单之外。例子:
<form id="my-form">
...
</form>
<button type="submit" form="my-form">
Submit
</button>
此外,<button>元素还可以具有formmethod和formaction属性,分别覆盖表单的方法和动作。例子:
<button type="submit" form="my-form" formmethod="post" formaction="/something.php">
Submit
</button>
下面是<button>元素所有可用属性的引用:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button
更新:在现代浏览器中,您可以使用form属性来完成此操作。
据我所知,你不能没有javascript做到这一点。
这是说明书上说的
用于创建控件的元素通常出现在FORM内部 元素,但也可以出现在FORM元素声明之外 当它们被用于构建用户界面时。这在 内在事件部分。注意,窗体外部的控件不能这样做 成功控制。
这是我的粗体
提交按钮被认为是一个控件。
http://www.w3.org/TR/html4/interact/forms.html#h-17.2.1
从评论中
我有一个多选项卡设置区域的按钮更新所有,到期 根据它的设计,按钮将在窗体之外。
为什么不把输入放在表单内部,而是使用CSS将其定位到页面的其他地方呢?