![](/img/trans.png)
[英]ASP.NET MVC Form: Can submit with ENTER key but not Submit button
[英]Enter button does not submit form (IE ONLY) ASP.NET
我有一个带有文本框和按钮的表单。 IE是唯一一个按下Enter键时不提交表单的浏览器(适用于FF,Opera,Safari,Chrome等)。 我发现这个javascript函数试图哄骗IE进行表现; 但无济于事:
function checkEnter(e){
var characterCode
if (e && e.which) {
e = e
characterCode = e.which
} else {
e = event
characterCode = e.keyCode
}
if (characterCode == 13) {
document.forms[0].submit()
return false
} else {
return true
}
}
执行:
searchbox.Attributes("OnKeyUp") = "checkEnter(event)"
有什么建议?
编辑: CodeProject上的这个页面概述了Dillie所说的内容,它完美无缺。
只需在页面上的隐藏div中创建文本输入即可。 这将绕过IE漏洞。
示例div:
<!-- Fix for IE bug (One text input and submit, disables submit on pressing "Enter") -->
<div style="display:none">
<input type="text" name="hiddenText"/>
</div>
我过去做的另一件事是将表单区域包装在Panel中,并将DefaultButton属性设置为您拥有的提交按钮。 只要在面板区域中有一个焦点的表单元素,这就可以有效地将输入键映射到提交。
这里有一个很好的写这个问题,一个很好的基于jquery的解决方案:
http://www.thefutureoftheweb.com/blog/submit-a-form-in-ie-with-enter
// Use the following Javascript in your HTML view
// put it somewhere between <head> and </head>
<script language="JavaScript" type="text/javascript"><!--
function KeyDownHandler(btn)
{
if (event.keyCode == 13)
{
event.returnValue=false;
event.cancel = true;
btn.click();
}
}
// -->
</script>
// Put this in your TextBox(es) aka inside <asp:textbox ... >
onkeydown="KeyDownHandler(ButtonID)"
隐藏按钮 - 不使用display:none,但使用以下样式:
position: absolute; /* no longer takes up layout space */
visibility: hidden; /* no longer clickable / visible */
如果这样做,您将不需要添加任何其他元素或隐藏的输入。
使用display:none
,IE将无法看到该按钮,因此无法使用它来提交表单。 相反,您可以使用z-index
和绝对定位将其隐藏在另一个元素下,例如使用样式:
position:absolute; bottom: -20px; left: -20px; z-index: -1;
现在它仍然存在,可以被IE使用,但隐藏在另一个元素之下。
这是由于IE对单个文本字段输入的特殊性。
一个简单的解决方案是通过添加另一个隐藏的页面来停止具有单个文本字段的页面。
<input type="text" name="hidden" style="visibility:hidden;display:none;" />
它使用GET而不是POST吗? 网址太长了吗? 我见过......
基本上,表单需要一个按钮,输入类型=“提交”或输入类型=“图像”,以使内置行为能够在输入时提交表单。 你不应该需要一个javascript来提交它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.