縦長になるような入力フォームにいいかな
と思ってメモ。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要素ごとにスライドします。
画像スライドも
画像にも対応してたり。
なかなか汎用性が高そうな気がします。デモもあるので触ってみては如何でしょう。