2

YUI に DataTable があります。すべてのキーイベントを無視するようにテーブルを取得しようとしています。私はこれらの方法を試しました:

YAHOO.util.Event.addListener(singleSelectDataTable, "keydown", function(oEvent) {
    YAHOO.util.Event.stopPropagation(oEvent); 
});

また

YAHOO.util.Event.preventDefault(singleSelectDataTable.tableKeyEvent);    

また

singleSelectDataTable.subscribe('tableKeyEvent', function(oArgs) { 
  YAHOO.util.Event.preventDefault(oArgs.event); 
});

クリック イベントをインターセプトする YUI の例をいくつか見てきましたが、この特定のシナリオには当てはまりません。それが役立つ場合は、スタンドアロンの HTML テスト ファイルを作成しました: http://pastebin.com/khfR4Stk。基本的な問題は、テーブルで上向き矢印キーまたは下向き矢印キーをサポートしたくないということです。これはスクロール テーブルであり、適切に機能させるためには、選択が「表示されたウィンドウ」を超えたら、スクロール サムを調整する必要があります。

私が考えることができる唯一の他の解決策は、tableKeyEvent にサブスクライブし、キープレスが上矢印の場合は、新しく選択された行の選択を解除し、前の行を選択して、下矢印に適切なアナログを実行することです (基本的に、キーを押しただけです)。これは適切な解決策とは思えませんでした…</p>

4

3 に答える 3

0

keydown イベントに false を返すイベント ハンドラを追加することはできませんか?

于 2011-01-06T14:20:08.620 に答える
0

この onclick の等価物を作成してみてください

function noenter(evt)
{
    var k = evt.keyCode||evt.which;
    return k != 13;
}

getCharCodeの構文を取得し、入力を受け取ったときにそれを拒否する必要があることをスクリプトに伝えます。

于 2011-01-05T22:06:40.917 に答える
0

上下矢印キーが処理された、 tableKeyEvent が発生します。したがって、そのイベントを停止しようとしても役に立ちません。

DataTable ウィジェットの機能を見て_onTbodyKeydown、選択モードを無効なモードに設定すると、キー矢印キー ナビゲーションが無効になることに気付きました。幸いなことに、他の選択処理を壊すことはないようです。少なくともあなたの例ではそうではありません。

したがってselectionMode:"single"、 selectionMode:"" に変更するだけで問題ありません :-) (もちろん、これが将来のバージョンで機能するという保証はありません)

于 2011-01-05T20:37:20.123 に答える