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 に答える