我正在尝试通过按Enter键但不显示提交按钮来提交表单。如果可能的话,我不想进入JavaScript,因为我希望所有浏览器都可以工作(我知道的唯一JS方式是事件)。
现在表格看起来像这样:
<form name="loginBox" target="#here" method="post">
<input name="username" type="text" /><br />
<input name="password" type="password" />
<input type="submit" style="height: 0px; width: 0px; border: none; padding: 0px;" hidefocus="true" />
</form>
哪个效果很好。当用户按下Enter键时,提交按钮会起作用,并且该按钮不会显示在Firefox,IE,Safari,Opera和Chrome中。但是,我仍然不喜欢这个解决方案,因为很难知道它是否适用于所有浏览器的所有平台。
有人能建议更好的方法吗?或者这是否与它一样好?
答案 0 :(得分:225)
尝试:
<input type="submit" style="position: absolute; left: -9999px"/>
这会将按钮向左推,离开屏幕。这样做的好处是,当CSS被禁用时,你会得到优雅的降级。
更新 - IE7的解决方法
正如Bryan Downing + tabindex
建议阻止标签到达此按钮(由Ates Goral提供):
<input type="submit"
style="position: absolute; left: -9999px; width: 1px; height: 1px;"
tabindex="-1" />
答案 1 :(得分:93)
我认为你应该去Javascript路线,或者至少我会:
<script type="text/javascript">
// Using jQuery.
$(function() {
$('form').each(function() {
$(this).find('input').keypress(function(e) {
// Enter pressed?
if(e.which == 10 || e.which == 13) {
this.form.submit();
}
});
$(this).find('input[type=submit]').hide();
});
});
</script>
<form name="loginBox" target="#here" method="post">
<input name="username" type="text" /><br />
<input name="password" type="password" />
<input type="submit" />
</form>
答案 2 :(得分:75)
你试过这个吗?
<input type="submit" style="visibility: hidden;" />
由于大多数浏览器都理解visibility:hidden
并且它不像display:none
那样真正起作用,所以我猜它应该没问题。我自己没有真正测试过,所以CMIIW。
答案 3 :(得分:27)
没有提交按钮的另一种解决方案:
HTML
<form>
<input class="submit_on_enter" type="text" name="q" placeholder="Search...">
</form>
的jQuery
$(document).ready(function() {
$('.submit_on_enter').keydown(function(event) {
// enter has keyCode = 13, change it if you want to use another button
if (event.keyCode == 13) {
this.form.submit();
return false;
}
});
});
答案 4 :(得分:14)
对于将来查看此答案的任何人,HTML5会为表单元素hidden
实现一个新属性,该属性会自动将display:none
应用于您的元素。
e.g。
<input type="submit" hidden />
答案 5 :(得分:13)
使用以下代码,这解决了我在所有3种浏览器(FF,IE和Chrome)中的问题:
<input type="submit" name="update" value=" Apply "
style="position: absolute; height: 0px; width: 0px; border: none; padding: 0px;"
hidefocus="true" tabindex="-1"/>
在代码的第一行添加上面的行,并使用适当的name和value值。
答案 6 :(得分:7)
除了您当前用来隐藏按钮的黑客外,在style属性中设置visibility: collapse;
要简单得多。但是,我仍然建议使用一些简单的Javascript来提交表单。据我所知,现在对这类事物的支持无处不在。
答案 7 :(得分:7)
只需将hidden属性设置为true:
<form name="loginBox" target="#here" method="post">
<input name="username" type="text" /><br />
<input name="password" type="password" />
<input type="submit" hidden="true" />
</form>
答案 8 :(得分:6)
这样做最优雅的方法是保留提交按钮,但将其边框,填充和字体大小设置为0.
这将使按钮尺寸为0x0。
<input type="submit" style="border:0; padding:0; font-size:0">
您可以自己尝试一下,通过设置元素的轮廓,您将看到一个圆点,这是外边框&#34;周围&#34; 0x0 px元素。
不需要能见度:隐藏,但如果它让你在晚上睡觉,你也可以把它扔进混合物中。
答案 9 :(得分:5)
<input type="image" src="img/1x1trans.gif"/>
答案 10 :(得分:4)
这是我的解决方案,在Chrome,Firefox 6和IE7 +中进行了测试:
.hidden{
height: 1px;
width: 1px;
position: absolute;
z-index: -100;
}
答案 11 :(得分:3)
最简单的方式
<input type="submit" style="width:0px; height:0px; opacity:0;"/>
答案 12 :(得分:2)
您也可以尝试这个
<INPUT TYPE="image" SRC="0piximage.gif" HEIGHT="0" WIDTH="0" BORDER="0">
您可以包含宽度/高度= 0 px
的图像答案 13 :(得分:2)
<input type="submit" style="display:none;"/>
这很好用,它是你想要实现的最明确的版本。
请注意,其他表单元素的display:none
和visibility:hidden
之间存在差异。
答案 14 :(得分:2)
对于那些在IE和其他人身上都有问题的人。
{
float: left;
width: 1px;
height: 1px;
background-color: transparent;
border: none;
}
答案 15 :(得分:0)
我将它添加到文档就绪的函数中。如果表单上没有提交按钮(我的所有Jquery对话框表格都没有提交按钮),请附加它。
$(document).ready(function (){
addHiddenSubmitButtonsSoICanHitEnter();
});
function addHiddenSubmitButtonsSoICanHitEnter(){
var hiddenSubmit = "<input type='submit' style='position: absolute; left: -9999px; width: 1px; height: 1px;' tabindex='-1'/>";
$("form").each(function(i,el){
if($(this).find(":submit").length==0)
$(this).append(hiddenSubmit);
});
}
答案 16 :(得分:0)
HTML5解决方案
<input type="submit" hidden />
答案 17 :(得分:0)
我使用了大量的UI框架。他们中的许多人都有内置的类,您可以使用这些类在视觉上隐藏事物。
<input type="submit" class="sr-only" tabindex="-1">
<input type="submit" class="cdk-visually-hidden" tabindex="-1">
创建这些框架的出色人才将这些样式定义如下:
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
.cdk-visually-hidden {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
outline: 0;
-webkit-appearance: none;
-moz-appearance: none;
}
答案 18 :(得分:0)
input.on('keypress', function(event) {
if ( event.which === 13 ) {
form.submit();
return false;
}
});
答案 19 :(得分:0)
这是对我有用的代码,它肯定会对您有所帮助
<form name="loginBox" target="#here" method="post">
<input name="username" type="text" /><br />
<input name="password" type="password" />
<input type="submit" />
</form>
<script type="text/javascript">
$(function () {
$("form").each(function () {
$(this)
.find("input")
.keypress(function (e) {
if (e.which == 10 || e.which == 13) {
this.form.submit();
}
});
$(this).find("input[type=submit]").hide();
});
});
</script>
答案 20 :(得分:-1)
我已经
了< input class="hidden" type="submit" value=""
onclick="document.getElementById('loginform').submit()"; />
和
.hidden {
border:0;
padding:0;
font-size:0;
width: 0px;
height: 0px;
}
<。>在.css文件中。
它也为我神奇地工作。 :)