2

Enter イベントをタブ イベントのように動作させたいテキスト ウィジェットがあります。そのため、キー プレス イベントをキャプチャし、タブ ネイティブ イベントを発生させます。

ただし、タブの動作はアプリケーションに反映されません。イベントハンドラのコードは

   public void onKeyPress(KeyPressEvent event) { 
            int keyCode = event.getNativeEvent().getKeyCode(); 
            if (keyCode == KeyCodes.KEY_ENTER) { 
               NativeEvent nativeEvent = 
               Document.get().
                 createKeyPressEvent(false,false,false,false,KeyCodes.KEY_TAB ); 
               DomEvent.fireNativeEvent(nativeEvent, this, this.getElement()); 
            } 

非推奨の createKeyPressEvent をより多くの引数で使用すると、タブ イベントが発生しますが、動作はタブ キーを押したときとは異なり、次のウィジェットに移動します。新しいコードは、createKeyPress イベント行で上記のコードから次のように変更されます。

     NativeEvent nativeEvent = 
       Document.get().
         createKeyPressEvent(false,false,false,false,
                      KeyCodes.KEY_TAB ,KeyCodes.KEY_TAB);
4

1 に答える 1

1

イベントを手動で起動しても、そのイベントに関連付けられたデフォルトのアクションは生成されないことに注意してください。たとえば、フォーカスイベントを手動で起動しても、要素はフォーカスを受け取りません(そのためには、そのフォーカスメソッドを使用する必要があります)。送信イベントを手動で起動すると、フォームは送信されません(送信メソッドを使用)。キーイベントを手動で起動すると、その文字がフォーカスされたテキスト入力に表示されないようにします。リンクに対して手動でクリックイベントを発生させても、リンクはアクティブ化されません。UIイベントの場合、これはセキュリティ上の理由から重要です。スクリプトが妨げられるためです。ブラウザ自体と対話するユーザーアクションのシミュレーションから。

http://www.howtocreate.co.uk/tutorials/javascript/domeventsから。

于 2010-10-26T22:07:17.360 に答える