Bootstrapのドロップダウンにログインフォームを設置する方法
この記事ではツイッターのかっこいいログインフォームを目標にして作った方法をご紹介したいと思います。
はじめに
はじめは普通にBootstrapの公式サイトに書かれているようにドロップダウンのJSやHTMLを書きます。Dropdowns bootstrap-dropdown.js
問題点
Bootstrapのドロップダウンを使った事がある方は分かると思うのですが、中身をクリックすると消えちゃうんですよね。
それの何が問題かというと、ログインフォームの場合は入力欄をクリックするとフォームごと消えてしまいます。
そこで見つけたのがこんな方法です。
$(function() { // Setup drop down menu $('.dropdown-toggle').dropdown(); // Fix input element click problem $('.dropdown input, .dropdown label').click(function(e) { e.stopPropagation(); }); });
ソースコード参考サイト:
実際に記述したコード※a-blog cmsを使っています。
<div class="login"> <!-- BEGIN_MODULE Login --> <ul class="nav pull-right"> <li class="divider-vertical"></li> <li class="dropdown"> <a class="dropdown-toggle" href="#" data-toggle="dropdown"> ログイン <strong class="caret"></strong> </a> <dl class="dropdown-menu"> <!-- BEGIN auth --> <dt>ユーザーID / メールアドレス</dt> <dd> <form action="%{BLOG_URL}login/" method="post" id="formBox"> <input type="text" name="mail" value="{mail}" class="formSizeL js-ready-focus span3" id="input-text-mail" /> <input type="hidden" name="login[]" value="mail" /> </dd> <dt>パスワード</dt> <dd> <input type="password" name="pass" value="{pass}" class="formSizeL span3" /> <input type="hidden" name="login[]" value="pass" /> </dd> <dd class="loginAction"> <label class="validator-result-{pass:validator#auth}">ユーザーIDまたはパスワードが違います。</label> <button type="submit" id="loginSubmit" class="btn" name="ACMS_POST_Login_Auth">ログイン</button> <ul class="loginLink"> <!-- BEGIN subscribeLink --> <li> <a href="/login/alt/subscribe/">新規の読者登録はこちら</a> </li> <!-- END subscribeLink --> <li> <a href="/login/alt/remind/">パスワードをお忘れの方はこちら</a> </li> </ul> </form> </dd> <!-- END auth --> </dl> </li> </ul> <!-- END_MODULE Login --> <!-- BEGIN_MODULE Touch_Login --> <!-- BEGIN_MODULE Admin_ActionMenu --> <form action="" method="post" class="adminBtn"> <input type="submit" class="btn" name="ACMS_POST_Logout" value="ログアウト" /> </form> <!-- END_MODULE Admin_ActionMenu --> <!-- END_MODULE Touch_Login --> </div>