1

Enter キーを押してコンボボックスからオプションを選択する際に問題があります。2 つのページが存在します。これらのページの 1 つは YUI データ テーブルを使用し、もう 1 つは使用しません。この問題は、YUI データ テーブルのあるページでのみ発生します。掘り下げた後、YUIデータテーブルがページの他のすべてのコンポーネントのEnterキーイベントに関する問題を引き起こしていると確信しています。ページから YUI データ テーブルを削除すると、問題なく動作します。

yui-data テーブルに datatable-beta.js を使用していますが、新しいバージョンに置き換えることができません。このライブラリに関連するものが非常に多いため、会社が望んでいません。

この問題のため、単純な「html select タグ」でオプションを選択するために Enter を使用できません。

この問題をどのように解決しますか?誰かが YI ライブラリについて同様の問題に直面していますか?

4

2 に答える 2

1

元のスクリプトを変更する必要がないように、ページのメソッドをオーバーライドできます。

以下のようにオーバーライドするだけで(e.keyCode == 13が削除されます)、そのページの入力の問題は解決されます。

<script type="text/javascript>
YAHOO.widget.DataTable.prototype._onDocumentKeydown=function(e,oSelf)
{
  if((e.keyCode==27))
  {
        oSelf.cancelEditorData();
  }

}
</script>
于 2013-02-08T07:14:43.040 に答える
0

この問題の原因となっているコードを特定するために、いくつかのコード ブロックをコメントアウトしました。この方法で多くのコード部分を削除し、次の行に到達しました。

YAHOO.util.Event.addListener(document,"keydown",this._onDocumentKeydown,this);

この行は datatable-beta.js にありますが、なぜこのようなことをしたのかわかりません。すべての dom 要素の keydown イベントを処理しています。そのため、エンターを押してコンボボックスからオプションを選択することはできません。Combobox は単なるサンプルです。つまり、ページのどのコンポーネントにも enter を使用することはできません。ハンドラ メソッドのコードは次のとおりです。

YAHOO.widget.DataTable.prototype._onDocumentKeydown=function(e,oSelf)
{
      if((e.keyCode==27))
      {
            oSelf.cancelEditorData();
      }
      if(e.keyCode==13)
      {
            YAHOO.util.Event.stopEvent(e);
            oSelf.saveEditorData();
      }
}

彼らはエスケープと入力文字を処理しています。これらの行をコメントアウトしたくありません。他のコード ブロックに影響を与える可能性があります。私は問題を正確に見つけましたが、それでも解決策を提案することができます。問題が見つかったとしても、元のスクリプトを変更せずにエンター キーを使用する最善の方法を探しているからです。

于 2013-02-07T21:20:22.953 に答える