UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#181 ボタンクリックで確認のアラートメッセージを表示

記入日:2023-07-08 編集日:2023-07-08

ボタンクリックで確認のアラートメッセージを表示する方法について解説してみようと思います。

この記事を読むと(約5分)
ボタンクリックで確認のアラートメッセージを表示する方法についてイメージできます。

ボタンクリックで確認のアラートメッセージを表示

以下のコードは、チェックアウトボタンをクリックしたときに確認のアラートメッセージを表示し、ユーザーが「OK」を選択した場合にフォームを送信する機能を実装しています。

  1. チェックアウトフォームとチェックアウトボタンの要素を変数として取得します。
  2. チェックアウトボタンに「click」イベントリスナーを追加します。ボタンがクリックされたときには、showAlert関数が呼び出されます。
  3. showAlert関数では、デフォルトのイベント動作をキャンセルし、ボタンを無効化します。そして、確認のアラートメッセージを表示します。
  4. confirm関数を使用してアラートメッセージを表示し、ユーザーが選択した結果をresult変数に格納します。
  5. resultの値に応じて条件分岐を行います。もしresultがtrueであれば(ユーザーが「OK」を選択した場合)、チェックアウトフォームを送信します。
  6. もしresultがfalseであれば(ユーザーが「キャンセル」を選択した場合)、チェックアウトボタンを再度有効化します。
スクリプトの動作は以下のようになります:

<form id="checkout-form" method="POST" action="/checkout">
  <button type="submit" id="checkout-button">Checkout</button>
</form>

<script>
  var checkoutForm = document.getElementById("checkout-form");
  var checkoutButton = document.getElementById("checkout-button");
  checkoutButton.addEventListener("click", showAlert);

  function showAlert(event) {
    event.preventDefault();
    checkoutButton.disabled = true;

    var result = confirm("アラートメッセージの内容\n\nOKボタンを押して処理を続けるかキャンセルボタンを押して中止します。");

    if (result) {
      // OKボタンがクリックされた場合、フォームを送信
      checkoutForm.submit();
    } else {
      // キャンセルボタンがクリックされた場合、ボタンの無効化を解除
      checkoutButton.disabled = false;
    }
  }
</script>

このコードの目的は、ユーザーがチェックアウトを進める前に確認のダイアログを表示し、ユーザーが処理を続けるかどうかを選択できるようにすることです。ユーザーが「OK」を選択した場合にはフォームが送信され、選択をキャンセルした場合には処理が中止されます。これにより、ユーザーが誤って注文を確定することを防ぐことができます。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。