我有一个标准的登录表单 - 一个电子邮件文本字段,一个密码字段和一个使用HTML / jQuery的AIR项目的提交按钮 . 当我在表单上按Enter键时,整个表单的内容消失,但表单未提交 . 有谁知道这是否是一个Webkit问题(Adobe AIR使用Webkit for HTML),还是我已经把事情搞砸了?
我试过了:
$('.input').keypress(function (e) {
if (e.which == 13) {
$('form#login').submit();
}
});
但这既没有阻止清算行为,也没有提交表格 . 没有与表单相关的操作 - 这可能是问题吗?我可以在动作中加入javascript函数吗?
14 回答
这是一种作为JQuery插件执行此操作的方法(如果您想重新使用该功能):
现在,如果你想用这种类型的功能来装饰它,它就像这样简单:
我今天发现按下Enter键时没有触发按键事件,所以你可能想要切换到keydown()或keyup() .
我的测试脚本:
在键盘上键入“A Enter B”时控制台中的输出:
您在第二个序列中看到'keypress'缺失,但是keydown和keyup注册代码'13'被按下/释放 . 根据jQuery documentation on the function keypress():
在Server 2012 R2上测试IE11和FF61
返回
false
以防止击键继续 .只需添加即可轻松实施 . 您只需创建一个表单,然后隐藏提交按钮:
例如:
不知道它是否有用,但您可以尝试模拟提交按钮单击,而不是直接提交表单 . 我在 生产环境 中有以下代码,它工作正常:
注意:按下Enter键时, jQuery('#submit').focus() 使按钮具有动画效果 .
注意:您接受了bendewey的答案,但它对e.preventDefault()的描述不正确 . 看看这个stackoverflow答案:event.preventDefault() vs. return false
基本上,"return false"与调用
e.preventDefault
和e.stopPropagation()
相同 .有没有理由你必须挂钩并测试输入键?
你不能简单地添加一个
到你的表格,并在推入时自然提交?你甚至可以勾选表单的
onsubmit
动作并从那里调用验证函数,如果你想...您甚至可以使用
onsubmit
作为测试来查看您的表单是否正在提交,但如果您调用form.submit()
则它将无效 .另外,为了保持可访问性,您应该使用它来确定您的密钥代码:
我现在用
起初我在提交按钮中添加了一个事件处理程序,这对我产生了错误 .
试试这个:
除了Jason Cohen提到的返回假 . 您可能还必须阻止默认
这是我的代码:
您也可以简单地将
onsubmit="return false"
添加到页面中的表单代码以防止默认行为 .然后将表单的
submit
事件挂钩(.bind
或.live
)到javascript文件中带有jQuery的任何函数 .这是一个示例代码,可以帮助您:
HTML
Javascript + jQuery
这是在2011-04-13,使用Firefox 4.0和jQuery 1.4.3
在HTML代码中:
在Js代码中: