2010-12-28 17 views
2

私は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がやったことを基本的に元に戻す)。これは適切なソリューションのようには見えませんでした...

答えて

0

の上矢印キーが処理された後に、tableKeyEventが呼び出されました。そのイベントをやめようとしても役に立たないでしょう。

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

そうちょうどのselectionModeにselectionMode:"single"を変更します(これは将来のバージョンに動作するという保証はありませんもちろん)「」あなたは罰金:-) でなければなりません

+0

これは、マウスがテーブルをナビゲートできないため、適切なソリューションではありません。 – Avery

+0

私はあまりにも早く話しました。私の実際のコードは、与えられた例より複雑です。指定された例は、次の行を使用します。singleSelectDataTable.subscribe( "rowClickEvent"、singleSelectDataTable.onEventSelectRow); 私の実際のコードでこれを使用します:singleSelectDataTable.subscribe( "rowClickEvent"、function(oArgs){singleSelectDataTable.onEventSelectRow(oArgs.event、oArgs.target); 後者のコードは機能しません。 selectionModeがオフの場合でも行を選択しますか? – Avery

+0

'singleSelectDataTable.onEventSelectRow(oArgs)'を使用するとマウスのナビゲーションは機能します(onEventSelectRowのドキュメントは正しくないようです)。 しかし、この場合は "標準"選択モードが使用され、 CtrlキーとShiftキーを使用して複数の行を表示できます。これを回避するには、空の空のイベントオブジェクトを用意してください: 'singleSelectDataTable.onEventSelectRow({'target':oArgs.target、 'event':{}});'。 – SuperRembo

0

はこのonclickのの当量を作成してみてください

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

Get getCharCodeの構文と、それは入力を受信したとき、それはそれを否定する必要があることをスクリプトに指示。

+0

I申し訳ありませんが、あなたはそのonclickのequivを作成することによって何を意味するのかはっきりしません。小さなコード例を教えてください。 – Avery

0

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