簡単設定のAjaxメールフォーム -protoform.js-

2009-06-28

簡単設定のAjaxメールフォーム -protoform.js-


以前の弊社HPでは使用していたのですが、WordpressでHPを作成してからは使わなくなっていました。今回はprototype.jsを使用したCOOL&スタイリッシュで、Ajaxライクなメールフォームスクリプト「protoform.js」を紹介します。配布元が英語サイトで、日本語の紹介サイトが少なかったというのもここに掲載した1つの理由です。

このフォームは入力に[ 必須 / Tel / Email / URL / 日付]のチェックをしてくれます。デモはこちらの「Send message (demo)」になります、またソース一式は「DownLoad」から取得可能ですが、PHPソースの書き換えが必要だったりしますので、サーバ環境含め少し知識ある人でないと設置できないかもしれません。元ファイルはUTF-8なので、(一概には言えませんが)EUC-JP/SJISの方はファイルの文字エンコードを変換しておくといいかもしれません。では、以下設定手順を。

設定方法

ファイル一式を取得し解凍

proto

解凍すると、以下のようなファイルがあります。

proto2

index.htmlについて

このページに使い方も記載されています。 簡単な翻訳を記載しておきます。

  • HTMLファイルにprototype.js and protoform.jsをインクルードしてください。
  • フォームは<div id=”box”>で囲んでください。formタグにclass=”validate”を指定すると入力チェックをするようになります。
  • InputタグのTitleに入力エラー時のメッセージを指定してください。Inputタグのid名には入力チェックする条件を指定できます。

例:index.html

<title>メールフォーム</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="protoform.js"></script>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="box"> <!-- IDはbox指定 -->
<form action="send.php" method="post" id="send" class="validate">
<fieldset>
<legend>メールフォームです</legend>
<div>
<label for="name_Req">名前<span>*</span></label>
<!-- idに_Reqがつくと必須チェックする -->
<input type="text" id="name_Req" name="name" title="名前(必須)が未入力です" />
</div>
<div>
<label for="contact_Req_Email">メール<span>*</span></label>
<!-- idに_Emailがつくとアドレスチェックする(今回は必須+アドレスチェック) -->
<input type="text" id="contact_Req_Email" name="email" title="メール(必須)が未入力か誤っています" />
</div>
<div>
<label for="telephone_Tel">電話</label>
<!-- idに_Telがつくと番号チェックする -->
<input type="text" id="telephone_Tel" name="telephone" title="正しい電話番号を入力してください" />
</div>
<div>
<label for="message_Req">内容<span>*</span></label>
<!-- idに_Reqがつくと必須チェックする -->
<textarea id="message_Req" name="message" rows="5″ cols="20″ title="内容(必須)が未入力です"></textarea>
</div>
<div class="button">
<input type="submit" value="送信" />
</div>
</fieldset>
</form>
</div><!-- /#box -->
</body>
</html>

send.phpの修正

ダウンロードした状態では、メール送信するようなスクリプトにはなっていないので、送信処理を追加します。上記例のHTMLになぞると、以下のようなPHPソースになります。

例:send.php

<?php
echo "<div id=\"response\">";
$name            = $_POST["name"];
$email           = $_POST["email"];
$telephone       = $_POST["telephone"];
$message         = $_POST["message"];
if ( ($name=="") && ($email=="") && ($telephone=="") && ($message=="")) {

echo "<p>全項目を埋めてください<span>*</span></em></p>";

}else {
// ■■■■■■■■■■■■ ここに送信処理を記載する
$msg = "名前".$name."内容".$message."TEL:".$telephone."E-Mail:".$email;
mail("sample@todomain.jp",mb_encode_mimeheader ("タイトル","JIS","B"),mb_convert_encoding($msg,"JIS"),
"From: ".$email."rnReply-To: ".$email."rnX-Mailer: PHP/" . phpversion());
// ■■■■■■■■■■■■ 送信処理ここまで

echo "<p>送信されました:</p>";
echo "<ul>";
echo "<li>Name: ".$name."</li>";
echo "<li>E-mail: ".$email."</li>";
echo "<li>Telephone: ".$telephone."</li>";
echo "<li>Message:".$message."</li>";
echo "</ul>";
}
echo "</div>";
?>

上記緑部分が追記となります。mb_send_mailが使えるサーバであればそちらを使用することをお勧めします。

これをサーバにUPすれば設定完了です。最後に実行権限付与をお忘れなく。MITライセンスなので商用も著作権表記しておけば利用可能です。

追記(2010/03/22)

本項はprotoform ver1.0の紹介です。2010/03/22.現在ではVer1.1となっており、使用方法が変更されています。Ver1.0時のサンプルソースを以下に掲載しておきます。
protoform ver1.0 サンプル



簡単設定のAjaxメールフォーム -protoform.js- へのコメント

簡単設定のAjaxメールフォーム -protoform.js- へのトラックバック

  1. :: 簡単設定のAjaxメールフォーム -AjaxMail- «zamuu ::
  • LINK

    瀬戸内国際芸術祭2010

    クリックで救える命がある。

    日本Androidの会四国支部

ページのトップへ戻る

アーカイブArchives

タグTags