2010-06-01 48 views
2

按设计我需要一个输入元素键入文本,但我不需要输入元素键入提交。一旦按下回车键,我想提交输入元素中写的内容。我将如何在JavaScript中做到这一点?我需要标签和其他东西,还是我可以没有它们(只使用)?脚本化HTML表单的输入元素?

回答

2

至少在Firefox中,按input[type=text]元素中的输入将提交它。

看看JSBin

你不需要使用JavaScript(可能在IE中,现在无法测试)。

另外,值得一提的是,所有表格应该有都有一个提交按钮。您将需要明确告诉用户推送回车。另外,没有输入按钮的设备呢?我听说Zune无法在没有按钮的情况下提交表单。

有人说异常是搜索输入框,就像堆栈溢出一样。不过,我认为它仍然可以受益于小型搜索按钮或类似。

+0

我同意一个小按钮是建议。 – picknick 2010-06-01 09:43:11

+0

是啊,亚历克斯,搜索输入框是什么。另外,我看过它是如何在SO上实现的 - 并且没有(甚至是隐藏的)按钮。 (尽管他们有形式标签。) – 2010-06-01 10:35:50

0

你并不真的需要JavaScript。这应该各主要桌面浏览器(FF2-3,镀铬/铬,IE6-8,Opera6-10)工作:

<form action="/some/action" method="POST"> 
    <input type="text" name="somefield"> 
</form> 

按ENTER键在输入字段将提交表单如常。

注意事项:

  • (鼠标)的用户会感到困惑 - 要确实创造的主要可用性问题?
  • 残疾用户(例如,使用某种形式的屏幕阅读器)可能无法提交表单 - 如果公司是在美国,现在你有一个法律问题去与可用性问题
  • 移动和/或异国情调的浏览器可能无法提交表格
+0

对你指出的警告很有趣。非常有趣。那么,我非常关心这些问题。使用连接键盘的普通电脑 - 你很好。至于残疾用户,那么,我不处理那种人,所以...... =) – 2010-06-01 10:29:48

+0

如果你不想要一个答案,那么你最好停止提问。另外,我还没有看到带有键盘的iPhone。现在很多东西都是“电脑”。 – Piskvor 2010-06-01 14:01:23

0

您可以观看按键事件并阅读特定元素上的键码,每当您收到“Enter”键时,您都可以触发提交。

function GetKeyCode(e) { 
    var code; 
    if (!e) var e = window.event; 
    if (e.keyCode) code = e.keyCode; 
    else if (e.which) code = e.which; 
    var character = String.fromCharCode(code); 
    alert('Character was ' + character); 
} 

但是,大多数浏览器会自动在“Enter”键上发布表单。

1

你不需要任何脚本。我有一个小钩子为你

<form id="form" action="action.php" method="get"> 
    <input type="text" name="login" value="login" /> 
    <input type="submit" value="submit" style="display: none;" /> 
</form> 

style =“display:none;”是一个解决方案

+0

如果使用@media选择器设置提交按钮的样式,那实际上可能会解决残疾和/或移动问题。 – Piskvor 2010-06-01 09:50:03