当有人按下返回键并且表单中没有按钮时,有人可以告诉我如何提交HTML表单吗? 提交按钮不存在。我正在使用自定义div而不是。
答案 0 :(得分:81)
要在按下回车键时提交表单,请沿着这些行创建一个javascript函数。
function checkSubmit(e) {
if(e && e.keyCode == 13) {
document.forms[0].submit();
}
}
然后将事件添加到您需要的任何范围,例如div标签:
<div onKeyPress="return checkSubmit(event)"/>
这也是Internet Explorer 7的默认行为(尽管可能是早期版本)。
答案 1 :(得分:53)
IMO,这是最干净的答案:
<form action="" method="get">
Name: <input type="text" name="name"/><br/>
Pwd: <input type="password" name="password"/><br/>
<div class="yourCustomDiv"/>
<input type="submit" style="display:none"/>
</form>
更好的是,如果您使用javascript使用自定义div提交表单,您还应该使用javascript来创建它,并在按钮上设置display:none样式。这样,禁用javascript的用户仍会看到提交按钮并可以点击它。
已经注意到display:none会导致IE忽略输入。我创建了一个new JSFiddle example作为标准表单开始,并使用渐进增强来隐藏提交并创建新div。我确实使用了StriplingWarrior中的CSS样式。
答案 2 :(得分:52)
我尝试了各种基于javascript / jQuery的策略,但我一直遇到问题。当用户使用回车键从浏览器的内置自动完成列表中进行选择时,出现的最新问题涉及意外提交。我终于切换到了这个策略,这似乎适用于我公司支持的所有浏览器:
<div class="hidden-submit"><input type="submit" tabindex="-1"/></div>
.hidden-submit {
border: 0 none;
height: 0;
width: 0;
padding: 0;
margin: 0;
overflow: hidden;
}
这与Chris Marasti-Georg目前接受的答案类似,但是通过避免display: none
,它似乎在所有浏览器上都能正常运行。
我编辑了上面的代码以包含否定tabindex
,因此它不会捕获Tab键。虽然这在技术上不会在HTML 4中验证,但HTML5规范包含的语言使其能够像大多数浏览器已经实现它一样工作。
答案 3 :(得分:13)
使用<button>
标记。从W3C标准:
使用BUTTON元素创建的按钮功能就像使用INPUT元素创建的按钮一样,但它们提供了更丰富的渲染可能性:BUTTON元素可能包含内容。例如,包含图像的BUTTON元素的功能类似于并且可能类似于其类型设置为“image”的INPUT元素,但BUTTON元素类型允许内容。
基本上还有另一个标记<button>
,不需要javascript ,也可以提交表单。它可以采用<div>
标记(包括按钮标记内的<img />
)的样式。 <input />
标签中的按钮几乎没有灵活性。
<button type="submit">
<img src="my-icon.png" />
Clicking will submit the form
</button>
在<button>
上设置三种类型;它们映射到<input>
按钮类型。
<button type="submit">Will submit the form</button>
<button type="reset">Will reset the form</button>
<button type="button">Will do nothing; add javascript onclick hooks</button>
<强>标准强>
我使用带有css-sprites的<button>
标记和一些css样式来获取丰富多彩的功能表格按钮。请注意,例如,可以使用<a class="button">
链接将css写入<button>
元素的样式。
答案 4 :(得分:8)
我相信这就是你想要的。
//<![CDATA[
//Send form if they hit enter.
document.onkeypress = enter;
function enter(e) {
if (e.which == 13) { sendform(); }
}
//Form to send
function sendform() {
document.forms[0].submit();
}
//]]>
每次按下一个键,都会调用函数enter()。如果按下的键与回车键(13)匹配,则将调用sendform()并发送第一个遇到的表单。这仅适用于Firefox和其他符合标准的浏览器。
如果您觉得此代码有用,请务必投票给我!
答案 5 :(得分:7)
以下是我使用jQuery
的方法j(".textBoxClass").keypress(function(e)
{
// if the key pressed is the enter key
if (e.which == 13)
{
// do work
}
});
其他javascript也不会太差异。 catch检查keypress参数为“13”,这是回车键
答案 6 :(得分:6)
使用以下脚本。
<SCRIPT TYPE="text/javascript">
<!--
function submitenter(myfield,e)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;
if (keycode == 13)
{
myfield.form.submit();
return false;
}
else
return true;
}
//-->
</SCRIPT>
对于在用户点击输入时应提交表单的每个字段,请按如下方式调用submitenter函数。
<FORM ACTION="../cgi-bin/formaction.pl">
name: <INPUT NAME=realname SIZE=15><BR>
password: <INPUT NAME=password TYPE=PASSWORD SIZE=10
onKeyPress="return submitenter(this,event)"><BR>
<INPUT TYPE=SUBMIT VALUE="Submit">
</FORM>
答案 7 :(得分:2)
我使用这种方法:
<form name='test' method=post action='sendme.php'>
<input type=text name='test1'>
<input type=button value='send' onClick='document.test.submit()'>
<input type=image src='spacer.gif'> <!-- <<<< this is the secret! -->
</form>
基本上,我只是添加了一个类型为image 的不可见输入(其中“ spacer.gif ”是1x1透明gif)。
通过这种方式,我可以使用“发送”按钮或仅通过键盘上的按Enter 提交此表单。
这就是诀窍!
答案 8 :(得分:0)
为什么不直接将div提交样式应用于提交按钮?我确定这里有一个javascript,但这会更容易。
答案 9 :(得分:0)
如果您使用的是asp.net,则可以使用表单上的defaultButton属性。
答案 10 :(得分:0)
我认为你应该有一个提交按钮或提交图像...你有使用“提交div”的具体原因吗?如果您只想要自定义样式,我建议<input type="image"...
。 http://webdesign.about.com/cs/forms/a/aaformsubmit_2.htm
答案 11 :(得分:0)
扩展答案,这对我有用,也许有人会觉得有用。
HTML
<form method="post" action="/url" id="editMeta">
<textarea class="form-control" onkeypress="submitOnEnter(event)"></textarea>
</form>
Js
function submitOnEnter(e) {
if (e.which == 13) {
document.getElementById("editMeta").submit()
}
}
答案 12 :(得分:-1)
与Chris Marasti-Georg的例子类似,而是使用内联javascript。 基本上将onkeypress添加到您希望使用enter键的字段。此示例作用于密码字段。
<html>
<head><title>title</title></head>
<body>
<form action="" method="get">
Name: <input type="text" name="name"/><br/>
Pwd: <input type="password" name="password" onkeypress="if(event.keyCode==13) {javascript:form.submit();}" /><br/>
<input type="submit" onClick="javascript:form.submit();"/>
</form>
</body>
</html>
答案 13 :(得分:-1)
由于display: none
按钮和输入在Safari和IE中不起作用,我发现最简单的方法是没有额外的javascript hacks ,只需添加一个绝对定位的{{ 1}}到表格并远离屏幕。
<button />
截至2016年9月,这适用于所有主流浏览器的当前版本。
显然,它只是根据需要调整<form action="" method="get">
<input type="text" name="name" />
<input type="password" name="password" />
<div class="yourCustomDiv"/>
<button style="position:absolute;left:-10000px;right:9990px"/>
</form>
的样式(而且在语义上更正确)。
答案 14 :(得分:-2)
使用&#34;自动对焦&#34;属性用于默认情况下为按钮提供输入焦点。实际上,单击表单中的任何控件也会关注表单,这是表单对RETURN做出反应的要求。所以,&#34;自动对焦&#34;如果用户从未点击过表单中的任何其他控件,那么会为您做到这一点。
所以,&#34;自动对焦&#34;如果用户在点击RETURN之前从未点击过任何表单控件,则会产生重要的区别。
但即便如此,在没有JS的情况下仍然需要满足2个条件:
a)你必须指定一个要去的页面(如果留空则不能工作)。在我的例子中,它是hello.php
b)控件必须可见。您可以想象将其移出页面隐藏,但您不能使用display:none或visibility:hidden。 我做的是使用内联样式将其从页面向左移动200px。我把高度设为0px,这样它就不会占用空间。因为否则它仍然会破坏上下的其他控件。或者你也可以浮动元素。
<form action="hello.php" method="get">
Name: <input type="text" name="name"/><br/>
Pwd: <input type="password" name="password"/><br/>
<div class="yourCustomDiv"/>
<input autofocus type="submit" style="position:relative; left:-200px; height:0px;" />
</form>