WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:VBSによるEnterキーのfocus移動

0:[投稿] ボカ!!! [2003/12/15 20:12 ][環境:IE6 Win2000]

VBScriptを用いてEnterキーによってfocusの移動をさせたいと思っています。つまり、いくつかのインプットボックスが存在して、Enterを押すことによって次のボックスに移動する、というような動作です。JScriptでのやり方は知っているのですが…
どなたかご存知の方、教えて下さい!


1:[回答] nero [2003/12/15 20:30 ]

Web 相談室はマルチポストも OK らしいですけれど、だからといって経緯を端折って書くのはどうかなあ。回答者も無駄な質問を繰り返さないといけません。
http://bbs8.otd.co.jp/javascript/bbs_tree?base=9125&range=1

向こうで教えてもらったサンプル (http://ningyoshi.com/JavaScript/enter.html
) は JavaScript で、ボカ!!! さんは VBScript にしたいと思われている。

最初に質問です。どうして JavaScript ではいけないのですか?
ASP はサーバサイドの処理で、今回の機能はクライアントサイドのお話です。だから、JavaScript でないといけない理由はあっても VBScript でないといけないなんて事はないはず。


2:[回答] nero [2003/12/15 20:37 ]

それを理解した上で VBS にしたいのなら下記のようになります。

<script type="text/vbscript">
Sub nextFocus(nextObj)
   If window.event.keyCode = 13 Then
       nextObj.focus()
       window.event.returnValue = false
   End If
End Sub
</script>


3:[回答] ボカ大すき。 [2003/12/16 09:29 ]

neroさん、ご丁寧にありがとうございます。
Enterキーによってテキストボックスのフォーカス移動をしたいと思ったのですが、submitボタンが存在するため、Enterキーを押すとそのボタンが反応してしまいます。type="submit"ではなくて"button"にすればよい、とどこかで聞いたのですが、それでもうまくいきません。
アドバイスよろしくお願い致します。


4:[回答] see [2003/12/16 09:47 ]

>それでもうまくいきません。
どのようなロジックの、何が原因なのか、何処を工夫すればよいのか、回答者は想像で答えることになってしまいます。
どのようにしたらうまくいかなかったのか、うまくいかないソースを掲示することも、情報として大切です。


5:[回答] ボカ大すき。 [2003/12/16 10:21 ]

seeさんのご指摘により、ソースを載せます。
****************
Response.Write "<" & "SCRIPT " & "LANGUAGE=VBSCRIPT>" & vbCrLf
Response.Write "Sub nextFocus(nextObj)"  & vbCrLf
Response.Write "    If window.event.keyCode = 13 Then" & vbCrLf
Response.Write "        nextObj.focus()" & vbCrLf
Response.Write "        window.event.returnValue = false" & vbCrLf
Response.Write "    End If" & vbCrLf
Response.Write "End Sub" & vbCrLf
Response.Write "<" & "/" & "SCRIPT>" & vbCrLf

Response.Write "<FORM method=""post"" target=""_top"" action=""xxx.asp"" name=""frm1"">" & vbCrLf
Response.Write "  <TABLE border=""0"" align=""center"" bgcolor=""white"" cellpadding=""1"">" & vbCrLf
Response.Write "    <TR style={font-size:8pt;} bgcolor=""navy""> " & vbCrLf
Response.Write "      <TH><FONT color=""antiquewhite"">あ</FONT></TH>" & vbCrLf
Response.Write "      <TH><FONT color=""antiquewhite"">い</FONT></TH>" & vbCrLf
Response.Write "      <TH><FONT color=""antiquewhite"">う</FONT></TH>" & vbCrLf
Response.Write "    </TR>" & vbCrLf
Response.Write "    <TR bgcolor=""white""> " & vbCrLf
Response.Write "      <TD align=""center""> " & vbCrLf
Response.Write "        <INPUT type=""text"" name=""A""  onKeypress=""nextFocus(B)"" size=""3"" maxlength=""3"" value=" & A & ">" & vbCrLf
Response.Write "      </TD>" & vbCrLf
Response.Write "      <TD align=""center""> " & vbCrLf
Response.Write "        <INPUT type=""text"" name=""B""  onKeypress=""nextFocus(C)"" size=""2"" maxlength=""2"" value=" & B & ">" & vbCrLf
Response.Write "      </TD>" & vbCrLf
Response.Write "      <TD align=""center""> " & vbCrLf
Response.Write "        <INPUT type=""text"" name=""C""  onKeypress=""nextFocus(A)"" size=""4"" maxlength=""4"" value=" & C & ">" & vbCrLf
Response.Write "      </TD>" & vbCrLf
Response.Write "    </TR>" & vbCrLf
Response.Write "  </TABLE>" & vbCrLf

Response.Write "<INPUT type=""submit"" name=""btnL"" value=""検  索"" style={position:relative;bottom:10px;left:30px;width:50%;height:40;}  onclick=""return InpCheck()"">"
Response.Write "</FORM>" & vbCrLf
****************

ここで、検索ボタンを押すとInpChek()という入力項目のチェックが走るようになっていますが、とりあえず、このボタンのタイプを"button"にしてみたのですがだめでした。

アドバイスよろしくお願い致します。


6:[回答] ボカ大すき。 [2003/12/16 10:58 ]

すみません。
type="button"にしたらフォーカス移動が確認されました。
が、検索ボタンのコーディング行で
「識別子がありません」というエラーが出てきてしまいます。
エラーが出るのみで正常動作はするのですが…。

度々申し訳ありませんが、よろしくお願いします。


7:[回答] yuu [URL] [2003/12/16 11:33 ]

type="submit" があるから送信されてしまうとか、type="button" にすれば大丈夫だとか、そういう間違った知識って何処から得るんですか?

>>2 で nero さんが提示しているスクリプトでうまくいくのですけど。type="submit" でも。


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/vbscript">
<title>neroさん提示のスクリプトで実装する</title>
<script type="text/vbscript"><!--
Sub nextFocus(nextObj)
  If window.event.keyCode = 13 Then
      nextObj.focus()
      window.event.returnValue = false
  End If
End Sub
'--></script>
</head>
<body>
<form action="#" method="post">
<fieldset><legend>Enter Keyで次のフィールドへ</legend>
<input type="text" name="btn1" value="" onkeypress="nextFocus(btn2)"><br>
<input type="text" name="btn2" value="" onkeypress="nextFocus(btn3)"><br>
<input type="text" name="btn3" value="" onkeypress="nextFocus(btn1)"><br>
<input type="submit" value="submit"></form>
</body>
</html>


8:[回答] のぐりん [2003/12/16 14:06 ]

neroさんの質問の通り、VBScriptでいけないわけは何でしょう?
これに、まず回答してください。

私も含め、http://bbs8.otd.co.jp/javascript/bbs_tree?base=9125&range=1 に
JavaScriptでのおかしい点の回答が付いています。
こちらも確認してください。

#VBSは、基本的にIE上でしか動作しませんが、
 JavaScriptは、IE以外でも動作するブラウザが数多く存在します。
 今後の汎用性などから、JavaScriptを使用したほうがいいと思われます。
#IE限定でクライアントサイドでExcelのマクロを使いたい、FileSystemObjectsを使いたい場合などは、VBScriptのほうが、
便利かもしれません。


9:[回答] see [2003/12/16 14:23 ]

>6
>検索ボタンのコーディング行で
onclick="return InpCheck()"は、JavaScriptですよね。
IE6SP1での経験ですが、javaScriptとVBScriptを混在させるときは、どちらのスクリプトか明示して呼び出さないと、エラーになることがあります。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World