[JS]フォームの入力欄を次々にアニメーションで表示するスクリプト
Post on:2011年1月12日
sponsorsr
フォームの項目を入力すると、次の入力欄がアニメーションで表示されるコンテンツを実装するチュートリアルを紹介します。

Gravity Registration Form with Jquery
デモページ
[ad#ad-2]
フォームの出来ぐあいは、ウェブアプリケーションとしての成功率を左右する要因となります。
一つのアプローチとして、ユーザーに入力欄の数を少なく感じられるように、入力する項目を一つずつ表示するスクリプトを紹介します。
フォームの実装
フォームの各項目は、リスト要素で実装しています。
HTML
<form method="post" > <ul> <li class="email"><label>Email: </label><br/> <input type="text" username="email" id="email" AUTOCOMPLETE=OFF/><span class="error"></span></li> <li class="username"><label>Username: </label><br/> <input type="text" name="name" id="username" AUTOCOMPLETE=OFF/><span class="error"></span></li> <li class="password"><label>Password: </label><br/> <input type="password" name="password" id="password" AUTOCOMPLETE=OFF/><span class="error"></span></li> <li class="submit"><input type="submit" value=" Register " id='submit'/></li> </ul> </form>
[ad#ad-2]
フォームのスタイリング
フォームのスタイルシートはシンプルです。
注意点は、各項目をデフォルトの状態では、非表示にしていることです。
※個人的には、スタイルシートでは表示にして、スクリプトで非表示が好ましいと思います。
CSS
ul{
padding:0px;
margin:0px;
list-style:none;
}
li{
padding:5px;
display:none;
}
label{
font-size:14px;
font-weight:bold;
}
input[type="text"], input[type="password"]{
border:solid 2px #009900;
font-size:14px;
padding:4px;
width:180px;
-moz-border-radius:6px;-webkit-border-radius:6px;
}
input[type="submit"]{
border:solid 1px #ff6600;
background-color:#FF6600;
color:#fff;
font-size:14px;
padding:4px;
-moz-border-radius:6px;-webkit-border-radius:6px;
}
.error{
font-size:11px;
color:#cc0000;
padding:4px;
}
#form{
width:350px;
margin:0 auto;
margin-top:30px;
}
スクリプトの実装
スクリプトは、jQueryを使用します。
外部ファイルとして、「jquery.js」と「jquery.easing.1.3.js」を指定し、下記のスクリプトを記述します。簡易的に各項目のチェック機能も備わっています。
JavaScript
$(function() {
$("ul li:first").show();
var ck_username = /^[A-Za-z0-9_]{3,20}$/;
var ck_email = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
var ck_password = /^[A-Za-z0-9!@#$%^&*()_]{6,20}$/;
$('#email').keyup(function(){
var email=$(this).val();
if (!ck_email.test(email)){
$(this).next().show().html("Enter valid email");
}else{
$(this).next().hide();
$("li").next("li.username").slideDown({duration: 'slow',easing: 'easeOutElastic'});
}
});
$('#username').keyup(function(){
var username=$(this).val();
if (!ck_username.test(username)){
$(this).next().show().html("Min 3 charts no Space");
}else{
$(this).next().hide();
$("li").next("li.password").slideDown({duration: 'slow',easing: 'easeOutElastic'});
}
});
$('#password').keyup(function(){
var password=$(this).val();
if (!ck_password.test(password)){
$(this).next().show().html("Min 6 Charts");
}else{
$(this).next().hide();
$("li").next("li.submit").slideDown({duration: 'slow',easing: 'easeOutElastic'});
}
});
$('#submit').click(function(){
var email=$("#email").val();
var username=$("#username").val();
var password=$("#password").val();
if(ck_email.test(email) && ck_username.test(username) && ck_password.test(password) ){
$("#form").show().html("<h1>Thank you!</h1>");
}else{
}
return false;
});
})
sponsors











