fieldset要素単位で横スライドするバリデーション付きの入力フォーム用jQueryプラグイン・jQuery Stepy

Ads

縦長になるような入力フォームにいいかな
と思ってメモ。fieldsetでグループ化された
要素単位でスライド化してくれます。下部
までスクロールする必要が無くなるのと、
どこが誤入力か分かりやすい、場所を取ら
ないなどのメリットがあります。

特に、入力項目が長いフォームは離脱率を高くする可能性も否めませんので、入力プロセスを補助するのはユーザビリティに大きく貢献出来るかと思います。IE6でも7でも動作するようです。

jQuery Stepy


日本語に直してみました。これは1例で、3つに分けなければならないわけではありません。


入力をミスすると、次のfieldset要素に進めない(スライドできない)という仕組み。


fieldsetごとにバリデーションチェックを行うのでユーザーもストレスが無いような有るような
うん、ストレス無いです。(キリッ

ファイルとか

		<script type="text/javascript" src="jquery.js"></script>
		<script type="text/javascript" src="jquery.validate.min.js"></script>
		<script type="text/javascript" src="jquery.stepy.min.js"></script>

本体とプラグインファイルをセットします。

エラーメッセージ

スライド部分

				$('#custom').stepy({
					backLabel:	'戻る',
					block:		true,
					errorImage:	true,
					nextLabel:	'次に進む',
					titleClick:	true,
					validate:	true
				});

チェック項目とエラーメッセージもここで設定

					rules: {
						'email':	'email',
						'bio':		'required',
						'password':	'required',
						'day':		'required',
						'gender':	'required'
					},
					messages: {
						'email':	{email: 'メールアドレスじゃねーし!'},
						'bio':		{required: '君のこと、もっと知りたいんだ'},
						'password':	{required: 'まだパスワード入れてないよ'},
						'day':		{required: '日付まだっす!'},
						'gender':	{required: '性別!性別教えて!'}
					}

メッセージ変えてくださいね。

マークアップ

<form id="custom">
				<fieldset title="STEP1">
					<legend>名前やメール</legend>
					<label>User:</label> <input type="text" value="かちびと" size="40" disabled="disabled"/>
					<label>E-mail:</label> <input type="text" name="email" size="40"/>
					<label>Password:</label> <input type="password" name="password" size="40"/>
				</fieldset>
	
				<fieldset title="2つ目のグループ">
					<legend>ニックネームとか</legend>
					<label>あだ名:</label> <input type="text" name="nick" size="30"/>
					<label>君のこと:</label> <textarea name="bio" rows="5" cols="60"></textarea>
				</fieldset>
	
				<fieldset title="これで最後">
					<legend>誕生日とか教えてちょ</legend>
					<input type="hidden"/> <!-- Hidden fields are not focused.  -->
					<label>誕生日:</label>
					<select name="day">
						<option></option>
						<option>23</option>
						<option>24</option>
						<option>25</option>
					</select>
					<select>
						<option>10</option>
						<option>11</option>
						<option>12</option>
					</select>
					<select>
						<option>1984</option>
						<option>1983</option>
						<option>1982</option>
					</select>
					<label>性別:</label>
					<input type="radio" name="gender"/> 男性
					<input type="radio" name="gender"/> 女性
					<label>Site:</label> <input type="text" name="site" size="40"/>
				</fieldset>
	
				<input type="submit" class="finish" value="登録!"/>
			</form>

こんな感じでマークアップ。fieldset要素ごとにスライドします。

画像スライドも


画像にも対応してたり。

なかなか汎用性が高そうな気がします。デモもあるので触ってみては如何でしょう。

jQuery Stepy