jQuery Mobileのプラグインである’SimpleDialog2‘を使って、モバイル画面用のダイアログを実装する。普通にダイアログを実現するには、
・page-role=”dialog”を指定してページを作成し、$.mobile.changePage()でそのページを開く
・page-role=”page”を指定してページを作成し、リンク(data-rel=”dialog”を指定)としてそのページを開く
とするが、やや使いづらいのでプラグインを使うのが簡単だ。
SimpleDialog2は、ダイアログ用のHTMLをあらかじめ記述しておく必要がない点が優れている。(プラグインが内部でHTMLのDOMを操作し、閉じたときに元の状態に戻してくれる。)
- CSS/jsファイルをロードする
<!-- HTML --> <link rel="stylesheet" type="text/css" href="http://dev.jtsage.com/cdn/simpledialog/latest/jquery.mobile.simpledialog.min.css" /> <script type="text/javascript" src="http://dev.jtsage.com/cdn/simpledialog/latest/jquery.mobile.simpledialog2.min.js"></script>
ダウンロードページを参照のこと。CDNも用意されている。
// JavaScript $(document).simpledialog2({ mode: 'button', headerText: headerText, headerClose: true, buttonPrompt: bodyText, buttons : { 'OK': { click: function () { funcOK(); // OKボタンがクリックされたときの動作 } } } });
このコードを実行すると、指定されたオプション(OKボタンのみのダイアログ)で初期化してダイアログを開く。
// JavaScript function openDialogOK(headerText, bodyText, funcOK){ // OKボタンのみのダイアログ } function openDialogOKCancel(headerText, bodyText, funcOK, funcCancel){ // OK/Cancelボタンのダイアログ } function openDialogInput(headerText, bodyText, funcOK){ // テキスト入力可能なダイアログ }
上記の3種のダイアログ用の関数を作成した。使い方は以下のとおり。
// JavaScript function handle0(){ // ダイアログを開く // OKボタンがクリックされたら、funcOK0を実行する openDialogOK('Confirm', 'Please Confirm', funcOK0); } function handle1(){ // OKボタンがクリックされたら、funcOK1()を実行する // Cancelボタンがクリックされたら、funcCancel1()を実行する openDialogOKCancel('Click One', 'Please Choose One', funcOK1, funcCancel1); // 非同期処理されるので、ここにコードを書いてもダイアログクローズ前に実行される } function handle2(){ // テキストを入力しOKボタンがクリックされたら、funcOK2()を実行する // funcOK2()は入力結果をパラメータとして受け取る openDialogInput('Input text', 'Please input text', funcOK2); } function funcOK2(text){ // パラメータtextに入力内容がセットされている $('#pDialogOutput2').text(text); }
・初期画面
・OKダイアログ
・OK/Cancelダイアログ
・Inputダイアログ
・Inputダイアログ(クローズ後)