jQueryで劇場の座席選択と予約の効果を実現

jQueryで劇場の座席選択と予約の効果を実現

jQueryは劇場の座席選択と予約の効果を実現します。参考までに、具体的な内容は次のとおりです。

効果は以下のとおりです。

コードは次のとおりです。

<!DOCTYPE html>
<html>

<ヘッド>
    <メタ文字セット="utf-8">
    <meta name="viewport" content="width=デバイス幅; initial-scale=1.0">
    <title>jQuery 劇場座席選択および予約エフェクト コード</title>
    <meta name="keywords" content="jQuery,座席選択">

    <スタイル タイプ="text/css">
        .デモ{
            幅: 700ピクセル;
            マージン: 40px 自動 0 自動;
            最小高さ: 450px;
        }
        
        @media スクリーンと (最大幅: 360px) {
            .デモ{
                幅: 340ピクセル
            }
        }
        
        。フロント {
            幅: 300ピクセル;
            マージン: 5px 32px 45px 32px;
            背景色: #f0f0f0;
            色: #666;
            テキスト配置: 中央;
            パディング: 3px;
            境界線の半径: 5px;
        }
        
        .予約の詳細{
            フロート: 右;
            位置: 相対的;
            幅: 200ピクセル;
            高さ: 450px;
        }
        
        .予約詳細 h3 {
            マージン: 5px 5px 0 0;
            フォントサイズ: 16px;
        }
        
        .予約詳細 p {
            行の高さ: 26px;
            フォントサイズ: 16px;
            色: #999
        }
        
        .booking-details p span {
            色: #666
        }
        
        div.seatChartsセル{
            色: #182C4E;
            高さ: 25px;
            幅: 25px;
            行の高さ: 25px;
            マージン: 3px;
            フロート: 左;
            テキスト配置: 中央;
            アウトライン: なし;
            フォントサイズ: 13px;
        }
        
        div.seatCharts-シート {
            色: #fff;
            カーソル: ポインタ;
            -webkit-border-radius: 5px;
            -moz-border-radius: 5px;
            境界線の半径: 5px;
        }
        
        div.seatCharts行{
            高さ: 35px;
        }
        
        div.seatCharts-seat.available {
            背景色: #B9DEA0;
        }
        
        div.seatCharts-seat.focused {
            背景色: #76B474;
            境界線: なし;
        }
        
        div.seatCharts-seat.selected {
            背景色: #E6CAC4;
        }
        
        div.seatCharts-seat.unavailable {
            背景色: #472B34;
            カーソル: 許可されていません。
        }
        
        div.seatChartsコンテナ{
            右境界線: 1px 点線 #adadad;
            幅: 400ピクセル;
            パディング: 20px;
            フロート: 左;
        }
        
        div.seatCharts-凡例 {
            左パディング: 0px;
            位置: 絶対;
            下: 16px;
        }
        
        ul.seatCharts-凡例リスト {
            左パディング: 0px;
        }
        
        .seatCharts-凡例アイテム {
            フロート: 左;
            幅: 90ピクセル;
            上マージン: 10px;
            行の高さ: 2;
        }
        
        span.seatCharts-legendDescription {
            左マージン: 5px;
            行の高さ: 30px;
        }
        
        .チェックアウトボタン{
            表示: ブロック;
            幅: 80ピクセル;
            高さ: 24px;
            行の高さ: 20px;
            マージン: 10px 自動;
            境界線: 1px 実線 #999;
            フォントサイズ: 14px;
            カーソル: ポインタ
        }
        
        #選択された座席{
            最大高さ: 150px;
            オーバーフロー-y: 自動;
            オーバーフローx: なし;
            幅: 200ピクセル;
        }
        
        #選択された座席 li {
            フロート: 左;
            幅: 72px;
            高さ: 26px;
            行の高さ: 26px;
            境界線: 1px 実線 #d3d3d3;
            背景: #f7f7f7;
            マージン: 6px;
            フォントサイズ: 14px;
            フォントの太さ: 太字;
            テキスト配置: 中央
        }
    </スタイル>

</head>

<本文>


    <div id="メイン">

        <div class="demo">
            <div id="座席マップ">
                <div class="front">画面</div>
            </div>
            <div class="予約の詳細">
                <p>映画: <span>インターステラー</span></p>
                <p>時間: <span>11月14日 21:00</span></p>
                <p>座席数:</p>
                <ul id="選択された座席"></ul>
                <p>投票数: <span id="counter">0</span></p>
                <p>合計: <b>¥<span id="total">0</span></b></p>

                <button class="checkout-button">購入を確認</button>

                <div id="凡例"></div>
            </div>
            <div style="clear:both"></div>
        </div>

        <br />
    </div>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.12.1.min.js"></script>
    <script type="text/javascript" src="jquery.seat-charts.min.js"></script>
    <script type="text/javascript">
        var price = 70; /*チケット価格*/
        $(ドキュメント).ready(関数() {
            var $cart = $('#選択された座席'),
                /*座席エリア*/
                $counter = $('#counter')、
                /*投票数*/
                $total = $('#total'); /*合計金額*/

            var sc = $('#seat-map').seatCharts({
                map: [ /* 座席表 */
                    「ああああああ」、
                    「ああああああ」、
                    '__________'、
                    「ああああああ__」、
                    「ああああああ」、
                    「ああああああ」、
                    「ああああああ」、
                    「ああああああ」、
                    「ああああああ」、
                    「あああああ」
                ]、
                ネーミング:
                    上: 偽、
                    getLabel: 関数(文字、行、列) {
                        戻り列;
                    }
                },
                legend: { /*凡例を定義する*/
                    ノード: $('#legend'),
                    アイテム: [
                        ['a', 'available', '空席'],
                        ['a'、'入手不可'、'販売済み']
                    ]
                },
                click: function() { /*クリックイベント*/
                    if (this.status() == 'available') { /*オプションの座席*/
                        $('<li>' + (this.settings.row + 1) + 'row' + this.settings.label + 'seat</li>')
                            .attr('id', 'cart-item-' + this.settings.id)
                            .data('seatId', this.settings.id)
                            .appendTo($cart);

                        $counter.text(sc.find('selected').length + 1);
                        $total.text(合計(sc) + 価格を再計算します);

                        '選択された' を返します。
                    } else if (this.status() == 'selected') { /*選択済み*/
                        /*数量を更新*/
                        $counter.text(sc.find('selected').length - 1);
                        /*合計を更新*/
                        $total.text(合計(sc) - 価格を再計算します);

                        /*予約席を削除*/
                        $('#cart-item-' + this.settings.id).remove();
                        /*オプションシート*/
                        'available' を返します。
                    } else if (this.status() == 'unavailable') { /*販売済み*/
                        '利用不可' を返します。
                    } それ以外 {
                        this.style() を返します。
                    }
                }
            });
            /*販売済み席*/
            sc.get(['1_2', '4_4', '4_5', '6_6', '6_7', '8_5', '8_6', '8_7', '8_8', '10_1', '10_2']).status('利用不可');

        });
        /*合計金額を計算します*/
        関数 recalculateTotal(sc) {
            var 合計 = 0;
            sc.find('selected').each(function() {
                合計 += 価格;
            });

            合計を返します。
        }
   
</本文>

</html>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • jQuery をベースにオンラインでの座席選択と予約を実現 - Cinema
  • jQuery オンライン座席選択プラグイン 座席表 特殊効果 コード共有
  • jQuery によるオンライン座席選択 - 高速鉄道バージョン

<<:  MySQL 5.7.19 インストールディレクトリに my.ini ファイルを作成する方法

>>:  Nginx に React プロジェクトをデプロイする方法の例

推薦する

MySQL のストレージ エンジンの違いと比較

MyISAM ストレージエンジンMyISAM は ISAM ストレージ エンジンに基づいており、それ...

MySQLのダウンロードとインストールのプロセスの詳細な説明

1: MySqlをダウンロードする公式サイトのダウンロードアドレス: https://dev.mys...

レンダリング関数を使用して、拡張性の高いコンポーネントをカプセル化する

必要:バックグラウンド管理では、次のようなレイアウトでデータを表示する必要があることがよくあります。...

ES5とES6の違いを分析する

目次概要関数シグネチャオプションパラメータ非厳密モード例外処理実用要約する概要ご存知のとおり、ES6...

Vue.js $refs 使用例の説明

プロパティやイベントがあるにもかかわらず、JavaScript で子コンポーネントに直接アクセスする...

MySQL のインデックスとデータ テーブルを管理する方法

目次テーブルの競合を見つけて修正するインデックス統計の更新テーブルの競合を見つけて修正するデータ テ...

JavaScriptはXiaomi Mall公式サイトの完全なページ実装プロセスを模倣します

目次1. ホームページ制作1. ダウンロードアプリの制作2. ナビゲーションバーの制作3. カルーセ...

js の通常形式の日付と時刻に 0 を自動的に追加する 2 つのソリューション

目次背景解決策1アイデア:コード:解決策2アイデア:要約する参照する背景日付と時間をフォーマットする...

WeChatミニプログラムが星評価を実装

この記事では、WeChatアプレットで星評価を実装するための具体的なコードを参考までに紹介します。具...

MySQL SQL ステートメントが遅い場合の一般的な原因と解決策

1. インデックス不足または無効なインデックスによるクエリの遅延数千万件のデータを含むテーブルで、イ...

MySQL シリーズ 10 同時実行制御を実装するための MySQL トランザクション分離

目次1.同時アクセス制御2. 取引1. トランザクションは ACID 原則に従います。 2. トラン...

vue+element を使用した Google プラグインの開発プロセス全体

シンプルな機能: ブラウザの右上隅にあるプラグイン アイコンをクリックすると小さなポップアップ ウィ...

Web ページのデザインを学ぶときに習得すべきコードは何ですか?

この記事では、Web ページ制作を学ぶ過程で習得すべきテクニックの一部を詳しく紹介します。これらの内...

MySQL は、現在のデータ テーブル内のすべての時間に対して指定された時間間隔を増加または減少させます (推奨)

DATE_ADD() 関数は、指定された時間間隔を日付に追加します。現在のテーブル内のすべてのデー...

jsはショッピングカートの加算と減算、価格計算機能を実現します

この記事では、ショッピングカートの増減と価格計算を実現するためのjsの具体的なコードを紹介します。具...