Form のサンプル
スタイルに、 bulmaswatch を利用
チェックボックス・ラジオボタンには、Bulma-Extensionsも使っています。
送信データの情報
<!-- form$$.html --> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8" /> <title>Bulma Project</title> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.1/css/bulma.min.css" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma-extensions@6.2.7/dist/css/bulma-extensions.min.css" /> <script defer src="https://use.fontawesome.com/releases/v5.7.1/js/all.js" ></script> <script src="/src/js/shortBulma$$.js"></script> <script src="https://cdn.jsdelivr.net/npm/bulma-extensions@6.2.7/dist/js/bulma-extensions.min.js"></script> <!-- /npm/bulma-extensions@6.2.7/bulma-checkradio --> </head> <body> <section class="section"> <div class="container"> <div class="columns"> <div class="column"></div> <div class="column is-8 content"> <!-- 各ページ --> <article class="message is-primary"> <div class="message-header"> <p class="is-size-4 p-4">Form のサンプル</p> </div> <div class="message-body has-background-white-bis" style="border-bottom: inset 2px #aaaa88" > <p> チェックボックス・ラジオボタンには、<strong>Bulma-Extensions</strong>も使っています。 </p> </div> </article> <div class="box"> <div class="notification"> DevToolsのconsoleにも出力 [ f12, shift+ctrl+I ] </div> <form> <div class="field"> <label class="label">Name</label> <div class="control has-icons-left"> <input class="input" id="name" type="text" placeholder="Text input" /> <span class="icon is-small is-left"> <i class="fas fa-user"></i> </span> </div> </div> <div class="field"> <label class="label">Email</label> <div class="control has-icons-left has-icons-right"> <input class="input is-danger" id="email" type="email" placeholder="Email input" value="" /> <span class="icon is-small is-left"> <i class="fas fa-envelope"></i> </span> </div> </div> <div class="field"> <label class="label">Subject</label> <div class="control"> <div class="select"> <select id="sel"> <option>Select dropdown</option> <option>With options</option> </select> </div> </div> </div> <div class="field"> <label class="label">Message</label> <div class="control"> <textarea class="textarea" id="msg" placeholder="Textarea" ></textarea> </div> </div> <div class="field"> <div class="control"> <label class="checkbox"> <input type="checkbox" id="chk" value="value1" /> I agree to the <a href="#">terms and conditions</a> </label> </div> </div> <div class="field"> <div class="control" id="rGroup"> <label class="radio"> <input type="radio" name="question" value="rad_value1" /> Yes </label> <label class="radio"> <input type="radio" name="question" value="rad_value2" /> No </label> </div> </div> <hr /> <p> ~~~~~ Bulma-Extensions (<strong>bulma-checkradio</strong>) ~~~~~ </p> <div class="field"> <input type="checkbox" class="is-checkradio" id="chkEx" name="chkEx" value="value1Ex" /> <!-- checked="checked" --> <label for="chkEx" >I agree to the <a href="#">terms and conditions</a></label > </div> <div class="field" id="rGroupEx"> <input type="radio" class="is-checkradio" id="rd1" name="question2" value="rad_value1Ex" /> <label for="rd1">Yes</label> <input type="radio" class="is-checkradio" id="rd2" name="question2" value="rad_value2Ex" /> <label for="rd2">No</label> </div> <hr /> <div class="field is-grouped"> <div class="control" id="submit"> <button class="button is-link">Submit</button> </div> <div class="control" id="reset"> <button class="button is-link is-light">Reset</button> </div> </div> </form> </div> <hr /> <article class="panel"> <p class="panel-heading has-background-info-light mb-1"> 送信データの情報 </p> <div class="data"> <!-- <a class="panel-block"> <span class="panel-icon"> <i class="fas fa-book" aria-hidden="true"></i> </span> bulma </a> --> </div> </article> <!-- 各ページ終り --> </div> <div class="column"></div> </div> </div> </section> <script></script> <script> $$de(() => { $$q('#name').focus(); $$qe('#name', (e) => console.log(e.target.value), 'change'); $$qe('#email', (e) => console.log(e.target.value), 'change'); $$qe('#sel', (e) => console.log(e.target.value), 'change'); $$qe('#msg', (e) => console.log(e.target.value), 'change'); $$qe( '#chk', (e) => console.log( `${e.target.value}: ${e.target.checked}` ), 'change' ); $$qAe( '#rGroup input', (e) => { console.log( `${e.target.value}: ${e.target.checked}` ); }, 'change' ); $$qe( '#chkEx', (e) => console.log( `${e.target.value}: ${e.target.checked}` ), 'change' ); $$qAe( '#rGroupEx input', (e) => { console.log( `${e.target.value}: ${e.target.checked}` ); }, 'change' ); $$qe('#submit', (e) => { e.preventDefault(); console.log(e.target.innerHTML); dispData(); }); $$qe('#reset', (e) => { // e.preventDefault(); e.target.form.reset(); }); }); const dispData = () => { let data = ''; data += mkData('name', '#name'); data += mkData('email', '#email'); data += mkData('sel', '#sel'); data += mkData('msg', '#msg'); data += mkData('chk', `${$$Id('#chk').value}: ${$$Id('#chk').checked}`); data += mkData('rGroup', getRadioValue('question')); data += '~~~~~ Extentions ~~~~~'; data += mkData( 'chkEx', `${$$Id('#chkEx').value}: ${$$Id('#chkEx').checked}` ); data += mkData('rGroupEx', getRadioValue('question2')); $$q('.data').innerHTML = data; }; const mkData = (hd, sel) => { if (['chk', 'chkEx', 'rGroup', 'rGroupEx'].includes(hd)) { return ` <span class="panel-block has-background-white-ter px-4"> #${hd}: <strong>${sel}</strong> </span> `; } else { return ` <span class="panel-block has-background-white-ter px-4"> #${hd}: <strong>${$$q(sel).value}</strong> </span> `; } }; const getRadioValue = (na) => { let ret = ''; $$na(na).forEach((elm) => { if (elm.checked) { ret = elm.value; } }); return ret; }; </script> </body> </html>
例えば、notification$$.htmlとshortBulma$$.jsが同じフォルダにある時は
<script src="./shortBulma$$.js"></script> または
<script src="shortBulma$$.js"></script> となります。