Weblog

2007.01.15: Enterキーが押されたら次の入力項目へ

フォーム上でEnterキーが押されたときにTabキーが押されたように次の入力項目へ移動させるにはどうしたら良いか。通常はテキストフィールドでEnterを押してしまうと送信されてしまう。ネット上でいろいろ探したけど、MSDNでEnterキーを押された時に無視する方法が載っていたけど、それを次のように改良してみた。KeyCodeをEnter(13)からTab(9)に書き換えてやるというもの。単純だけどIE上ではバッチリ動くので仕事では問題無さそう。
使い方は、フォームのonKeydownイベントにEnter2Tab()を割り当ててあげるだけ。
<script type="text/javascript">
function Enter2Tab() {
  if (event.keyCode == 13) {
    if (window.event.srcElement.type != 'submit' &&
      window.event.srcElement.type != 'textarea') {
      event.keyCode = 9;
    }
  }
}
</script>
<form onKeydown="Enter2Tab();">
<!-- ここに何か入力項目がある -->
</form>



2005.12.19: ASP.NET でクライアントの Excel を起動する

ASP.NETで社内イントラネット用にWebアプリケーションを構築。MS-SQL ServerのデータをExcelで印刷することになった。その時にJavascriptを使ってクライアント側のExcelを起動してマクロを走らせた。
実行する為には、WEBサーバをIEの《信頼済みサイト》に登録する必要があります。
面倒なCOM系の設定は不要なようだ。
(サーバ:Windows2000、クライアント:WindowsXP Pro SP2)

《コードサンプル》
function xlRun(xlFile, xlMacro, xlCmd, xlPara) {
  var xlApp = new ActiveXObject("Excel.Application");
  xlApp.DisplayAlerts = false;
  xlApp.Visible = true;
  xlApp.Workbooks.Open(xlFile, 0, true);
  xlApp.Run(xlMacro, xlCmd, xlPara);
  xlApp.Quit();
  xlApp = null;
}

《簡単な説明》
フルパスで指定されたExcelファイルをRead-Onlyで開いて、マクロを実行する。
ASP.NET上では、Button1などにonClickイベントを割り当てる。

xlFile

Excelファイルをフルパスで指定する。ネットワーク上の公開フォルダも可。

xlMacro

実行するマクロの名前

xlCmd, xlPara

マクロに渡す引数