JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで「はい」「いいえ」ボタン付きダイアログを作成する方法

結論:標準のconfirm()では「はい」「いいえ」は作れない

残念ながら、JavaScriptの標準機能だけで「はい」「いいえ」ボタンを持つダイアログボックスを作成することはできません。組み込みのconfirm()メソッドで表示される確認ダイアログには、「OK」と「キャンセル」の2つのボタンしか用意されていません。

そのため、「はい」「いいえ」のような任意のラベルを持つダイアログを実装したい場合は、HTML・CSS・JavaScriptを組み合わせたカスタムダイアログを自作する必要があります。

カスタムダイアログの実装例

以下は、jQueryを使って「Yes」「No」ボタン付きのカスタム確認ダイアログを作成するサンプルコードです。ボタンがクリックされると、それぞれに対応したコールバック関数が実行されます。

<!DOCTYPE html>
<html>
   <head>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
      <script>
         function functionConfirm(msg, myYes, myNo) {
            var confirmBox = $("#confirm");
            confirmBox.find(".message").text(msg);
            confirmBox.find(".yes,.no").unbind().click(function() {
               confirmBox.hide();
            });
            confirmBox.find(".yes").click(myYes);
            confirmBox.find(".no").click(myNo);
            confirmBox.show();
         }
      </script>
      <style>
         #confirm {
            display: none;
            background-color: #91FF00;
            border: 1px solid #aaa;
            position: fixed;
            width: 250px;
            left: 50%;
            margin-left: -100px;
            padding: 6px 8px 8px;
            box-sizing: border-box;
            text-align: center;
         }
         #confirm button {
            background-color: #48E5DA;
            display: inline-block;
            border-radius: 5px;
            border: 1px solid #aaa;
            padding: 5px;
            text-align: center;
            width: 80px;
            cursor: pointer;
         }
         #confirm .message {
            text-align: left;
         }
      </style>
   </head>
   <body>
      <div id="confirm">
         <div class="message"></div>
         <button class="yes">Yes</button>
         <button class="no">No</button>
      </div>
      <button onclick = 'functionConfirm("Do you like Football?", function yes() {
         alert("Yes")
      },
      function no() {
         alert("no")
      });'>submit</button>
   </body>
</html>

コードの仕組みを解説

このサンプルのポイントは以下のとおりです。

  • functionConfirm関数: 表示するメッセージと、Yes・Noそれぞれのクリック時に実行するコールバック関数を引数として受け取ります。
  • メッセージの差し替え: .message要素に渡されたテキストを設定することで、呼び出しごとに異なる質問を表示できます。
  • イベントの解除: unbind()で以前のクリックイベントを一度削除してから再登録しているため、何度呼び出してもイベントが重複しません。
  • 表示・非表示の切り替え: ダイアログは普段display: none;で非表示になっており、関数呼び出し時にshow()で表示されます。

「submit」ボタンをクリックすると、サッカーが好きかどうかを尋ねるダイアログが表示され、「Yes」または「No」を選択すると、対応するアラートが表示されます。

補足:モダンな代替手段

上記のように自作する以外にも、以下の方法があります。

  • <dialog>要素: HTML5で導入されたネイティブのダイアログ要素。showModal()メソッドで簡単にモーダルを表示でき、CSSでのカスタマイズも自由です。
  • UIライブラリの活用: BootstrapのModalやSweetAlert2などを使えば、デザイン性の高い確認ダイアログを短いコードで実装できます。

プロジェクトの規模やデザイン要件に応じて、最適な方法を選択してください。

  1. Androidでニュートラルオプション付きのダイアログ(AlertDialog)を作成する方法

    はじめに本記事では、Androidアプリでニュートラル(Neutral)オプションを含むダイアログを作成する方法を解説します。AlertDialogでは、肯定を表すPositiveButtonや否定を表すNegativeButtonに加えて、中立の役割を担う第3のボタン「NeutralButton」を設定できます。これにより、ユーザーにより柔軟な選択肢を提供することが可能になります。ステップ1:新規プロジェクトを作成するAndroid Studioを開き、「File」→「New Project」を選択して、必要な項目を入力し、新しいプロジェクトを作成します。ステップ2:レイアウトファイルを編集

  2. CSSとJavaScriptでアコーディオン(開閉パネル)を作成する方法をわかりやすく解説

    CSSとJavaScriptを組み合わせることで、クリックすると内容が開閉する「アコーディオン(折りたたみパネル)」を簡単に実装できます。本記事では、実際に動作するサンプルコードをもとに、その作成手順と仕組みを詳しく解説します。 アコーディオンの実装例 以下は、HTML・CSS・JavaScriptを使ってアコーディオンを実装した完全なサンプルコードです。 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, ini