Button Control: Submit Buttons
このExampleでは、submitボタンをYUIライブラリーを用いて作る(Exampleのページへのリンクはこちら)。
初期画面は以下で、これまでのExample同様に、inputタグ(input type=submit)、buttonタグといったmarkupからのボタンの生成と、markupに関係なくYUIライブラリーだけでボタンを生成する方法の2通り(細かくは3通り)の方法が示されている。
submit処理はdummyでサーバーサイドとの連携はない。
以下にJavascriptを含むhtmlの全体を示す。
さまざまな、コンフィグパラメータが指定されているが、これらの詳細については、APIドキュメントのConfiguration Attributesか、もしくは、YUIのButtonのトップページのコンフィグ属性の説明を参照。
たいていのパラメータは、HTMLの属性と一致している。
また、以下のコードを見ればわかるが、submitボタンのクリックイベントとそのハンドラーの定義は、(Buttonのclickイベントではなく)formタグ自身にsubscribeしている(Event.on)。
<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: 500px; 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.SubmitButton = function() { var onExampleSubmit = function (p_oEvent) { var bSubmit = window.confirm("Are you sure you want to submit this form?"); if(!bSubmit) { // キャンセルの場合には、デフォルトの動きを抑止する。 YAHOO.util.Event.preventDefault(p_oEvent); } }; return{ init: function() { // ---- buttonをinputタグのtype=checkboxから生成する。----- // Create a Button using an existing <input> element as a data source var oSubmitButton1 = new YAHOO.widget.Button("submitbutton1", { value: "submitbutton1value" } ); // Create a Button using an existing <button> element as a data source var oSubmitButton2 = new YAHOO.widget.Button("submitbutton2"); // Create a Button using the YUI Button markup var oSubmitButton3 = new YAHOO.widget.Button("submitbutton3", { value: "submitbutton3value" } ); var oSubmitButton4 = new YAHOO.widget.Button("submitbutton4", { type: "submit", value: "submitbutton4value" } ); // ---- buttonをmarkupなしで生成する。----- var oSubmitButton5 = new YAHOO.widget.Button( { type: "submit", label: "Submit Form", id: "submitbutton5", name: "submitbutton5", value: "submitbutton5value", container: "submitbuttonsfromjavascript" }); // submitイベントとハンドラをformに設定する。 YAHOO.util.Event.on("button-example-form", "submit", onExampleSubmit); } }; }(); //DOMが完全にloadされたら、サンプルを初期化する。 YAHOO.util.Event.onDOMReady( //DomReadyイベントで発火するハンドラ YAHOO.EGP.SubmitButton.init, //ハンドラに渡すオブジェクト(関数) YAHOO.EGP.SubmitButton, //ハンドラは、上記のオブジェクトのスコープをもつ。 true ); </script> </HEAD> <BODY class="yui-skin-sam"> <div id="container"> <p> Submit Buttonの作り方のサンプルです。 </p> <form id="button-example-form" name="button-example-form" method="post"> <fieldset> <legend>Info</legend> <label for="firstname">First Name: </label> <input type="text" id="firstname" name="firstname" value=""> <label for="lastname">Last Name: </label> <input type="text" id="lastname" name="lastname" value=""> <div> <label for="male">Gender: </label> <label for="male">Male </label> <input type="radio" id="male" name="gender" value="male" checked> <label for="female">Female </label> <input type="radio" id="female" name="gender" value="female"> </div> <div> <label for="month">Birthday: </label> <select id="month" name="month"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select> <select name="day"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="18">18</option> <option value="19">19</option> <option value="20">20</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> <option value="24">24</option> <option value="25">25</option> <option value="26">26</option> <option value="27">27</option> <option value="28">28</option> <option value="29">29</option> <option value="30">30</option> <option value="31">31</option> </select> <input type="text" name="year" value=""> </div> </fieldset> <fieldset id="submitbuttons"> <legend>Submit Buttons</legend> <fieldset id="submitbuttonsfrommarkup"> <legend>From Markup</legend> <!-- input , button tagから生成 --> <div> <input id="submitbutton1" type="submit" name="submitfield1" value="Submit Form"> <button id="submitbutton2" type="submit" name="submitfield2" value="submitfield2value">Submit Form</button> </div> <!-- span tagから生成 --> <div> <span id="submitbutton3" class="yui-button yui-submit-button"> <span class="first-child"> <input type="submit" name="submitfield3" value="Submit Form"> </span> </span> <span id="submitbutton4" class="yui-button yui-submit-button"> <span class="first-child"> <button type="button" name="submitfield4">Submit Form</button> </span> </span> </div> </fieldset> <fieldset id="submitbuttonsfromjavascript"> <legend>From JavaScript</legend> </fieldset> </fieldset> </form> </div> </BODY> </HTML>