我在启用jQuery的网站上有一个表单。表单没有<input type="submit">
按钮。因此,当您点击 enter 时,它不会被提交。模仿这种行为的推荐方法是什么?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head><title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript"><!--
$(function(){
$("form input:first").focus();
});
//--></script>
</head>
<body>
<form action="" method="post">
<input type="text" name="user">
<input type="password" name="pass">
</form>
</body>
</html>
我只想尝试为现有表单添加快速简单的改进。我完全理解所有关于可访问性的问题,但应用程序本身需要JavaScript,如果没有它,它将无法运行。提交表单的后备几乎没用。
答案 0 :(得分:11)
在表单中放置一个提交按钮,并使用JavaScript使其不可见。这符合两个目的:
答案 1 :(得分:4)
我会捕获输入元素的按键事件,注意键码13(输入)并调用提交。像这样:
$("form input").keypress(function(ev){
if (ev.keyCode == 13) {
$("form")[0].submit();
}
});
此代码未经测试。
答案 2 :(得分:2)
为什么不只是使用CSS隐藏按钮,甚至更好的JS:在这种情况下,表格将保持对已禁用JS的人可访问,并且您应该自动输入
答案 3 :(得分:1)
使用jquery表单插件。
答案 4 :(得分:1)
推荐?我不确定是否建议模仿这种行为!
虽然您可以尝试检测Enter的keypress
,但是有一些关于Enter press应该如何工作的微妙浏览器差异,这与您生成的内容不完全相同。如果没有JavaScript,你的表单将无法工作,这是不理想的。
所以放一个提交按钮。如果你真的坚持按钮不应该出现在页面上(我不确定这是个好主意),你总是可以绝对地将它放在左边 - 页面的手边没有人可以看到它。
请注意,尽管没有按钮,WebKit仍会提交表单。如果您必须使用凌乱的脚本对其进行修补,请确保取消按键的默认操作,否则您可能会获得双重提交。
答案 5 :(得分:1)
Safari,Firefox,Opera和IE8 都会提交表单。既不是提交按钮也不是javascript需要。 Try yourself
(没有测试IE6 / 7,但我95%确定他们也这样做。)
我同意其他人认为捕获输入并不是一个好主意。
更新:以上情况属实,但Firefox 不提交包含密码字段且没有提交按钮的表单。不知道为什么,有谁可以看到背后的原因?
更新2 :...除了IE之外,如果只有一个输入字段。
答案 6 :(得分:0)
我为了相同的目的使用了以下的东西但是没有用于jquery尝试这可能对你有所帮助。
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.onsubmit();
return false;
}
else
return true;
}