ショートカットキーや左右矢印キーによるフォーカスが、標準コントロールに移動しない

文書番号 : 23920     文書種別 : 不具合     最終更新日 : 2007/06/06
文書を印刷する
対象製品
InputMan for .NET 2.0J Web Forms Edition
発生環境
動作環境と同じ
状況
修正済み
詳細
次のような設定および操作によるフォーカス移動が、移動先(次のタブオーダーのコントロール)がTextBoxコントロール以外の標準コントロールの場合、動作しません。
  • ExitOnLeftRightKeyプロパティがNone以外に設定されている場合の、左右矢印キーの押下。
  • ExitOnLastCharプロパティがTrueに設定されている場合の、入力終了後の自動移動。
  • また、ショートカットキーのNextControl/PreviousControlが割り当てられたコントロールでのショートカットキーの押下。
回避方法
この問題は改定第1版(v2.0.2007.622)で修正されました。
不具合を修正した最新のサービスパックは、アップデートページからダウンロードできます。
改定第1版より前のバージョンでは次の方法で回避可能です。

ASPXファイルの</form>と</body>タグの間に次のコードを追加します。
バグID:6977の回避コードと同様です。

【回避コード】
<script language = "javascript">
Utility.GetElements = function()
{
  var elements = new Array();
  var obj = document.forms[0].elements;
  var index = 0;
  for (var i = 0; i < obj.length; i++)
  {
    if (isIE)
    {
      var idIndex = obj[i].id.indexOf(Utility.Hold + "_Gcsh_Text");
      if ((obj[i].type != "hidden" && obj[i].tabIndex != -1)
       || (obj[i].tagName.toLowerCase() == "textarea" && obj[i].tabIndex != -1)
       || (obj[i].type == "text" && idIndex != -1)
       || (obj[i].tagName.toLowerCase() == "span" && obj[i].isIMControl == "true"))
      {
        var element = new Object();
        if (obj[i].id == null || obj[i].id == "")
        {
          obj[i].id = "GrapeCityTempID" + i.toString();
        }
        if (idIndex != -1)
        {
          element.ID = obj[i].id.substring(0, idIndex);
          element.TabIndex = document.getElementById(element.ID).tabIndex;
        }
        else
        {
          element.ID = obj[i].id;
          element.TabIndex = obj[i].tabIndex;
        }
        elements[index++] = element;
      }
    }
    else
    {
      if (obj[i].type != "hidden" && obj[i].id.indexOf("GrapeCity#$%") == -1)
      {
        var element = new Object();
        element.ID   = obj[i].id;
        element.TabIndex = obj[i].tabIndex;
        elements[index++] = element;
      }
    }
  }
  for (var i = 0; i < elements.length - 1; i++)
  {
    for (var j = i + 1; j < elements.length; j++)
    {
      if (elements[j].TabIndex < elements[i].TabIndex)
      {
        var temp = elements[i];
        elements[i]   = elements[j];
        elements[j]   = temp;
      }
    }
  }
  return elements;
}</script>
キーワード
INME06197

この文書は、以前は次のバグレポートIDで公開されていました : 6974