Button Control: Checkbox Buttons
YUIのボタンオブジェクト(YAHOO.widget.Button)を使うと、チェックボックスをボタン(の格好)にすることができる(YUIのExampleのページはこちら)。
このExampleでは、チェックボックスをmarkup(inputタグのtype=checkbox、buttonタグ)から生成する方法と、Javascript(すなわち、YAHOOのライブラリ)から作成する方法が紹介されている。
サンプルの初期画面は以下。ボタンの格好をしているのは、すべてcheckboxで、form内の挙動は普通のcheckboxと変わりがない。初期画面では、Oneというラベルにチェックがついている。
いくつかのボタンをクリック(チェック)したのが下の画面である。
画面下にSubmitボタン(Submit Formというラベルのボタン)があるが、これはDummyであって処理につながらない。また、Resetボタンを押すと初期状態(Oneというラベルにチェックがついた状態)となる。これらの2つのボタンはYAHOO.widget.Buttonのインスタンスではない。
以下にJavascriptを含むhtmlの全文を示す。
これまでの例でもそうであったが、Javascriptから生成し、コンテナにAppendする方法では、自動的にボタンの間の間隔が確保される。
これに対して、マークアップから生成した場合には、これらの設定はhtml内のstyleで設定されている。
<HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <TITLE>Ajax_Sampling</TITLE> <style type="text/css"> body { margin:0; padding:0; } </style> <link rel="stylesheet" type="text/css" href="scripts/yui/fonts/fonts-min.css" /> <link rel="stylesheet" type="text/css" href="scripts/yui/button/assets/skins/sam/button.css" /> <script type="text/javascript" src="scripts/yui/yahoo-dom-event/yahoo-dom-event.js"></script> <script type="text/javascript" src="scripts/yui/element/element-beta-min.js"></script> <script type="text/javascript" src="scripts/yui/button/button-min.js"></script> <style type="text/css" id="defaultstyle"> #container { margin: 2px; padding: 3px; width: 400px; height: auto; border:1px dashed #999999; } #button-example-form fieldset, #button-example-form fieldset div { border: 2px groove #ccc; margin: .5em; padding: .5em; } #button-example-form-postdata { border: dashed 1px #666; background-color: #ccc; padding: 1em; } #button-example-form-postdata h2 { margin: 0 0 .5em 0; padding: 0; border: none; } </style> <script type="text/javascript"> //モジュールパターンで実装する。 YAHOO.namespace("EGP"); YAHOO.EGP.LinkBottum = function() { var Button = YAHOO.widget.Button; return{ init: function() { // ---- buttonをinputタグのtype=checkboxから生成する。----- var oCheckButton1 = new Button("checkbutton1", { label: "One" }); var oCheckButton2 = new Button("checkbutton2", { label: "Two" }); var oCheckButton3 = new Button("checkbutton3", { label: "Three" }); var oCheckButton4 = new Button("checkbutton4", { label: "Four" }); // ---- buttonをbuttonタグから生成する。----- var oCheckButton5 = new Button("checkbutton5", { type: "checkbox", value: "1", checked: true }); var oCheckButton6 = new Button("checkbutton6", { type: "checkbox", value: "2"}); var oCheckButton7 = new Button("checkbutton7", { type: "checkbox", value: "3" }); var oCheckButton8 = new Button("checkbutton8", { type: "checkbox", value: "4" }); // ---- buttonをmarkupなしで生成する。----- var oCheckButton9 = new Button( { type: "checkbox", label: "One", id: "checkbutton9", name: "checkboxfield3", value: "1", container: "checkboxbuttonsfromjavascript", checked: true }); var oCheckButton10 = new Button( { type: "checkbox", label: "Two", id: "checkbutton10", name: "checkboxfield3", value: "2", container: "checkboxbuttonsfromjavascript" }); var oCheckButton11 = new Button( { type: "checkbox", label: "Three", id: "checkbutton11", name: "checkboxfield3", value: "3", container: "checkboxbuttonsfromjavascript" }); var oCheckButton12 = new Button( { type: "checkbox", label: "Four", id: "checkbutton12", name: "checkboxfield3", value: "4", container: "checkboxbuttonsfromjavascript" }); } }; }(); //DOMが完全にloadされたら、サンプルを初期化する。 YAHOO.util.Event.onDOMReady( //DomReadyイベントで発火するハンドラ YAHOO.EGP.LinkBottum.init, //ハンドラに渡すオブジェクト(関数) YAHOO.EGP.LinkBottum, //ハンドラは、上記のオブジェクトのスコープをもつ。 true ); </script> </HEAD> <BODY class="yui-skin-sam"> <div id="container"> <p> LinkButtonの作り方のサンプルです。 </p> <form id="button-example-form" name="button-example-form" method="post"> <fieldset id="checkboxbuttons"> <legend>Checkbox Buttons</legend> <fieldset id="checkboxbuttonsfrommarkup"> <legend>From Markup</legend> <div> <input id="checkbutton1" type="checkbox" name="checkboxfield1" value="1" checked> <input id="checkbutton2" type="checkbox" name="checkboxfield1" value="2"> <input id="checkbutton3" type="checkbox" name="checkboxfield1" value="3"> <input id="checkbutton4" type="checkbox" name="checkboxfield1" value="4"> </div> <div> <span id="checkbutton5" class="yui-button yui-checkbox-button"> <span class="first-child"> <button type="button" name="checkboxfield2">One</button> </span> </span> <span id="checkbutton6" class="yui-button yui-checkbox-button"> <span class="first-child"> <button type="button" name="checkboxfield2">Two</button> </span> </span> <span id="checkbutton7" class="yui-button yui-checkbox-button"> <span class="first-child"> <button type="button" name="checkboxfield2">Three</button> </span> </span> <span id="checkbutton8" class="yui-button yui-checkbox-button"> <span class="first-child"> <button type="button" name="checkboxfield2">Four</button> </span> </span> </div> </fieldset> <fieldset id="checkboxbuttonsfromjavascript"> <legend>From JavaScript</legend> </fieldset> </fieldset> <div> <input type="reset" name="resetbutton" value="Reset Form"> <input type="submit" name="submitbutton" value="Submit Form"> </div> </form> </div> </BODY> </HTML>