4

我有一个简单的输入字段

并且在输入时我想提交它(它所在的表格)。我使用的是 jQuery,但没有使用任何自动完成扩展,所以它只是默认浏览器之一:

$('#searchfield')
.keypress(function(event) {
        var keycode;
        if (window.event)
            keycode = window.event.keyCode;
        else if (event)
            keycode = event.which;
        else
            return true;

        if (keycode == 13)
            $('#searchForm').submit();
});

此解决方案的问题: 当某人(在 FF3 中)开始输入(例如“stackov”),然后向下箭头选择提供的选项并按 Enter 键时,表单被发送出去,尽管搜索的是“stackov”,而不是选择的“堆栈溢出”。

或者我试过

$('#searchfield')
.change( function() {
   $('#singleSearch').trigger('click');
})

这让我正确地选择了“stackoverflow”,但现在任何离开该字段(如在 blur() 中,例如在敲击一些字母之后)都会不由自主地将其发送出去。

对此有任何(经过理想测试;)建议吗?

4

1 回答 1

1

嗯,我只能说,在提交之前允许“消化”自动完成的一小段延迟可以解决问题:

if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {
    setTimeout( function() {
        $('#searchForm').submit(); 
    } , 30 );
};
于 2011-04-08T14:51:12.350 回答