私はYUIにDataTableを持っています。私はすべてのkeyEventsを無視するテーブルを取得しようとしています。私は、イベントをクリックインターセプトするYUIの例をいくつ見てきましたが、そうではないJavascriptでkeyEventを無視するにはどうすればよいですか?
YAHOO.util.Event.addListener(singleSelectDataTable, "keydown", function(oEvent) {
YAHOO.util.Event.stopPropagation(oEvent);
});
OR
YAHOO.util.Event.preventDefault(singleSelectDataTable.tableKeyEvent);
OR
singleSelectDataTable.subscribe('tableKeyEvent', function(oArgs) {
YAHOO.util.Event.preventDefault(oArgs.event);
});
:私は、これらの方法を試してみましたこの特定のシナリオに類推する。私はスタンドアロンのHTMLテストファイルを作成しました。それが役立つとすれば:http://pastebin.com/khfR4Stk。基本的な問題は、テーブルの矢印キーまたは矢印キーをサポートしたくないということです。それはスクロールテーブルであり、適切に動作するために、選択が '表示ウィンドウ'を過ぎると、スクロールするサムを調整する必要があります。
私が考えることのできる唯一の解決策は、tableKeyEventを購読し、次にキー押しが上向き矢印の場合は、新しく選択された行を選択解除し、前の行を選択して、下向き矢印keypressがやったことを基本的に元に戻す)。これは適切なソリューションのようには見えませんでした...
これは、マウスがテーブルをナビゲートできないため、適切なソリューションではありません。 – Avery
私はあまりにも早く話しました。私の実際のコードは、与えられた例より複雑です。指定された例は、次の行を使用します。singleSelectDataTable.subscribe( "rowClickEvent"、singleSelectDataTable.onEventSelectRow); 私の実際のコードでこれを使用します:singleSelectDataTable.subscribe( "rowClickEvent"、function(oArgs){singleSelectDataTable.onEventSelectRow(oArgs.event、oArgs.target); 後者のコードは機能しません。 selectionModeがオフの場合でも行を選択しますか? – Avery
'singleSelectDataTable.onEventSelectRow(oArgs)'を使用するとマウスのナビゲーションは機能します(onEventSelectRowのドキュメントは正しくないようです)。 しかし、この場合は "標準"選択モードが使用され、 CtrlキーとShiftキーを使用して複数の行を表示できます。これを回避するには、空の空のイベントオブジェクトを用意してください: 'singleSelectDataTable.onEventSelectRow({'target':oArgs.target、 'event':{}});'。 – SuperRembo