在我的网站上,我在表单中有几个输入字段。我希望用户能够通过按Enter键在任何字段上提交表单。但是,这会导致问题,因为在Internet Explorer和Safari中,如果用户键入几个字母并打开自动完成下拉列表并使用箭头键并按Enter键进行自动完成,则表单将提交。
如何更改此行为?
另请注意,我有一个“提交”的自定义功能。它不是默认提交。
这是我的jQuery代码:
$('.submitButton').click( submitContactForm );
$('.column input, .submitButton').keydown(function( e ){
if( e.keyCode == 13 ){// if 'enter' key
$('.submitButton').click();
}
});
答案 0 :(得分:1)
我决定使用safeEnter jQuery plugin。看起来它会很好地解决这个问题。
答案 1 :(得分:0)
您需要在自动填充下拉列表中添加 onkeydown 事件,并在函数中返回false。
答案 2 :(得分:0)
如果您需要阻止表单提交,则应在事件处理程序中的事件对象上调用preventDefault()
方法。
element.onkeydown = function(event){
var event = event || window.event;
event.preventDefault();
var code = event.keycode || event.which;
if(code === 13){
// Your enter behavior
}
}
您可以通过调用event.stopPropagation();
来阻止事件冒泡DOM。如果您的自动填充功能位于表单中的某个位置,则有助于不在表单上触发事件,而只会在自动填充中触发。