刚刚输入 - 提交表单jQuery脚本。在你开始洪水之前“难道不是这样做了吗?” - 是的,如果你有一个实际的提交按钮。
但我使用<a>
标签作为按钮提交表单。除非禁用javascript,否则<noscript>
将显示实际标准的提交按钮。
它应该处理浏览器默认的自动完成功能,如果按下向上/向下箭头键,则暂时禁用自动提交输入,这将在自动完成列表中上下移动。
如果你看到任何警告,或者有改进的想法,那么它们就会变得更加渺茫。
这是脚本
// Submit form if focus on inputfields and enter is pressed
// To handle autocomplete, we disable next enter if arrow up/down pressed and autocomplete is not turned off
$('form input:text, form input:password').keyup(function(e){
var arrowKeys = new Array(38, 40);
var key = e.charCode || e.keyCode || 0;
if(key == 13){
if($(this).data('entersubmit')) {
e.preventDefault();
$(this).closest('form').submit();
return false;
}
$(this).data('entersubmit', true);
} else if($.inArray(key, arrowKeys) > -1) {
if($(this).attr('autocomplete') != 'off') {
$(this).data('entersubmit', false);
}
}
})
.blur(function(){
$(this).data('entersubmit', true);
})
.focus(function(){
$(this).data('entersubmit', true);
});
答案 0 :(得分:0)
我会使用.bind()
和对象映射$.data()
缩短它以消除不需要的jQuery对象和已经规范化的event.which
以及更短的数组语法,如下所示:
$('form input:text, form input:password').bind({
keyup: function(e){
var arrowKeys = [38, 40];
if(e.which == 13){
if($.data(this, 'entersubmit')) {
$(this).closest('form').submit();
return false;
}
$.data(this, 'entersubmit', true);
} else if($.inArray(key, arrowKeys) > -1) {
if($(this).attr('autocomplete') != 'off') {
$.data(this, 'entersubmit', false);
}
}
},
blur: function() {
$.data(this, 'entersubmit', true);
},
focus: function(){
$.data(this, 'entersubmit', true);
}
});
另请注意,您不需要同时.preventDefault()
和 return false
,重新调整false
同时调用.preventDefault()
和.stopPropagation()
。