VBScript とフォーム

簡単な入力検査の例

Microsoft® Visual Basic® Scripting Edition (以下 VBScript) を使用すると、通常、サーバー側で実行するようなフォームの処理をクライアント側でも実行できます。また、サーバー側では実行できないような処理も、VBScript を使用すると実行できます。

次のコード例は、クライアント側の実行例です。この HTML で記述されたコードは、テキスト ボックスおよびボタンを表示するためのコードです。Microsoft® Internet Explorer (以下 Internet Explorer) を使用して次の HTML のコードを記述したページを参照すると、小さなテキスト ボックスとボタンが表示されます。

<HTML>
<HEAD><TITLE>Simple Validation</TITLE>
<SCRIPT LANGUAGE="VBScript"> 
<!--
Sub Validate
  Dim TheForm
  Set TheForm = Document.forms("ValidForm")
  If IsNumeric(TheForm.Text1.Value) Then
    If TheForm.Text1.Value < 1 Or TheForm.Text1.Value > 10 Then
      MsgBox "1 から 10 までの数字を 1 つ入力してください。"
    Else
      MsgBox "ありがとうございます。"
    End If
  Else
    MsgBox "数値を入力してください。"
  End If
End Sub-->
</SCRIPT>
</HEAD>
<BODY>
<H3>Simple Validation</H3><HR>
<form id="ValidForm" action="nothing.asp" onsubmit="Validate(); return false;" language="jscript">
Enter a value between 1 and 10: 
<input name="Text1" TYPE="TEXT" SIZE="2">
<input name="Submit" TYPE="Submit" VALUE="Submit">
</form>
</BODY>
</HTML>

このコードの例では、「VBScript を使用した簡単なページの例」で示されたコードの例とは異なり、テキスト ボックスの Value プロパティを使用して入力された値をチェックしています。コードの中でテキスト ボックスの名前を参照先として指定すれば、Value プロパティの値を取得できます。

通常、Document.ValidForm.Text1 のように参照先は、完全な形式で記述します。ただし、フォーム上のコントロールを何度も参照する場合は、次のようにして参照先を指定します。最初に変数を宣言します。次に Set ステートメントを使用して TheForm にフォームを代入します。このような場合は、Dim ステートメントのような通常の代入ステートメントは使用できません。オブジェクトへの参照を格納するには、Set ステートメントを使用します。

数値の使い方

上のコードの例では、数値の代わりに値を直接評価しています。テキスト ボックス内の文字列が数値かどうかを確認するために IsNumeric関数を使用しています。VBScript では、必要に応じて自動的に文字列と数値が変換されますが、ユーザーが入力した値の内部処理形式を調べ、必要に応じて変換関数を使用することをお勧めします。また、プラス記号 (+ 演算子) は加算および文字列連結の 2 とおりの使用方法があるため、テキスト ボックスの値を合計するときには、値を明示的に数値に変換する必要があります。たとえば、Text1 に "1"、Text2 に "2" が含まれている場合、文字列連結処理になるか、または加算処理になるかで、結果は次のように異なります。

A = Text1.Value + Text2.Value   ' A は "12" です (文字列連結処理)。
A = CDbl(Text1.Value) + Text2.Value   ' A は "3" です (加算処理)。

データを検査してサーバーに送信する

通常、フォームに入力されたデータをサーバーに送信するには、Submit コントロールを使用します。しかし、Submit コントロールは、VBScript のコードを実行せずにデータをサーバーに送信するため、データの検査を行うことができません。そのため、「簡単な入力検査の例」では、Submit コントロールではなく、通常のボタン コントロールを使用しています。この場合、VBScript のコードには、データを送信するためのコードを追加する必要があります。

<SCRIPT LANGUAGE="VBScript"> 
<!--
Sub Button1_OnClick
 Dim TheForm
 Set TheForm = Document.ValidForm
 If IsNumeric(TheForm.Text1.Value) Then
    If TheForm.Text1.Value < 1 Or TheForm.Text1.Value > 10 Then
      MsgBox "1 から 10 までの数字を 1 つ入力してください。"
    Else
      MsgBox "ありがとうございます。"
      TheForm.Submit   ' データが正しい場合、サーバーに送信されます。
    End If
 Else
    MsgBox "数値を入力してください。"
 End If
End Sub
-->
</SCRIPT>

データをサーバーに送信するには、データが正しい場合にフォームの Submit メソッドが起動されるようにコードを記述する必要があります。サーバーは、データを受信すると、データ処理を開始します。Submit メソッドおよびその他のメソッドの詳細情報については、マイクロソフトの Web サイト (https://www.microsoft.com) の「Internet Explorer Scripting Object Model」を参照してください。

ここでは標準の HTML <FORM> オブジェクトだけを紹介しました。なお、Internet Explorer では、Microsoft ActiveX® コントロール (以前 OLE コントロールと呼んでいたもの) および Sun Microsystems® Java™ オブジェクトのすべての機能が活用できます。