この質問の目的は、jquery - autocompleteを使用して、tabアイテムが選択されていない場合にキーが最初のアイテムを選択できるようにすることです。
私が実装したコード(1)は機能しますが、疑問があります。目標を達成するために、それらを明確にするか、可能であればコード(1)を改善/変更したいと思います。
私の疑問は次のとおりです。
ENTERのトリガーが早すぎます。イベントのディスパッチは非同期です(異なるリスナーは同期的に呼び出されますが、トリガーとは非同期です)。そのため、リスナーがDONEを処理する前にトリガーする可能性があります。
したがって、ここでは両方のイベントに同じオブジェクトを使用しているため、厄介な副作用が発生する可能性があります(たとえば、最初のディスパッチ中にデフォルトを防止すると、2番目のディスパッチも同じオブジェクトであるため防止されます) 。
何か提案/コメントはありますか?
PS:
- jsfiddleリンクは次のとおりです:http://jsfiddle.net/uymYJ/31/。
- この質問は、この質問に関連しています。この状況でイベントオブジェクトを変更しないようにする方法。
(1)
$("#box").keydown(function(event){
var newEvent = $.Event('keydown', {
keyCode: event.keyCode
});
if (newEvent.keyCode !== $.ui.keyCode.TAB) {
return;
}
newEvent.keyCode = $.ui.keyCode.DOWN;
$(this).trigger(newEvent);
newEvent.keyCode = $.ui.keyCode.ENTER;
$(this).trigger(newEvent);
});