jQuery realizes the effect of theater seat selection and reservation, for your reference, the specific content is as follows The effect is as follows: The code is as follows: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width; initial-scale=1.0"> <title>jQuery theater seat selection and booking effect code</title> <meta name="keywords" content="jQuery,Seat selection"> <style type="text/css"> .demo { width: 700px; margin: 40px auto 0 auto; min-height: 450px; } @media screen and (max-width: 360px) { .demo { width: 340px } } .front { width: 300px; margin: 5px 32px 45px 32px; background-color: #f0f0f0; color: #666; text-align: center; padding: 3px; border-radius: 5px; } .booking-details { float: right; position: relative; width: 200px; height: 450px; } .booking-details h3 { margin: 5px 5px 0 0; font-size: 16px; } .booking-details p { line-height: 26px; font-size: 16px; color: #999 } .booking-details p span { color: #666 } div.seatCharts-cell { color: #182C4E; height: 25px; width: 25px; line-height: 25px; margin: 3px; float: left; text-align: center; outline: none; font-size: 13px; } div.seatCharts-seat { color: #fff; cursor: pointer; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } div.seatCharts-row { height: 35px; } div.seatCharts-seat.available { background-color: #B9DEA0; } div.seatCharts-seat.focused { background-color: #76B474; border: none; } div.seatCharts-seat.selected { background-color: #E6CAC4; } div.seatCharts-seat.unavailable { background-color: #472B34; cursor: not-allowed; } div.seatCharts-container { border-right: 1px dotted #adadad; width: 400px; padding: 20px; float: left; } div.seatCharts-legend { padding-left: 0px; position: absolute; bottom: 16px; } ul.seatCharts-legendList { padding-left: 0px; } .seatCharts-legendItem { float: left; width: 90px; margin-top: 10px; line-height: 2; } span.seatCharts-legendDescription { margin-left: 5px; line-height: 30px; } .checkout-button { display: block; width: 80px; height: 24px; line-height: 20px; margin: 10px auto; border: 1px solid #999; font-size: 14px; cursor: pointer } #selected-seats { max-height: 150px; overflow-y: auto; overflow-x: none; width: 200px; } #selected-seats li { float: left; width: 72px; height: 26px; line-height: 26px; border: 1px solid #d3d3d3; background: #f7f7f7; margin: 6px; font-size: 14px; font-weight: bold; text-align: center } </style> </head> <body> <div id="main"> <div class="demo"> <div id="seat-map"> <div class="front">Screen</div> </div> <div class="booking-details"> <p>Movie: <span>Interstellar</span></p> <p>Time: <span>November 14, 21:00</span></p> <p>Seats:</p> <ul id="selected-seats"></ul> <p>Votes: <span id="counter">0</span></p> <p>Total: <b>¥<span id="total">0</span></b></p> <button class="checkout-button">Confirm purchase</button> <div id="legend"></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; /*Ticket price*/ $(document).ready(function() { var $cart = $('#selected-seats'), /*Seating area*/ $counter = $('#counter'), /*Number of votes*/ $total = $('#total'); /*Total amount*/ var sc = $('#seat-map').seatCharts({ map: [ /* Seat map */ 'aaaaaaaaaaa', 'aaaaaaaaaaa', '__________', 'aaaaaaaa__', 'aaaaaaaaaaa', 'aaaaaaaaaaa', 'aaaaaaaaaaa', 'aaaaaaaaaaa', 'aaaaaaaaaaa', 'aa__aa__aa' ], naming: top: false, getLabel: function(character, row, column) { return column; } }, legend: { /*Define the legend*/ node: $('#legend'), items: [ ['a', 'available', 'Available seats'], ['a', 'unavailable', 'sold'] ] }, click: function() { /*click event*/ if (this.status() == 'available') { /*Optional seat*/ $('<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(recalculateTotal(sc) + price); return 'selected'; } else if (this.status() == 'selected') { /*Selected*/ /*Update quantity*/ $counter.text(sc.find('selected').length - 1); /*Update total*/ $total.text(recalculateTotal(sc) - price); /*Delete reserved seats*/ $('#cart-item-' + this.settings.id).remove(); /*Optional seat*/ return 'available'; } else if (this.status() == 'unavailable') { /*Sold*/ return 'unavailable'; } else { return this.style(); } } }); /*Sold seats*/ 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('unavailable'); }); /*Calculate the total amount*/ function recalculateTotal(sc) { var total = 0; sc.find('selected').each(function() { total += price; }); return total; } </body> </html> The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: How to create a my.ini file in the MySQL 5.7.19 installation directory
>>: Example method of deploying react project on nginx
1. Install Howdy: howdy project address sudo add-...
Detailed explanation of linux touch command: 1. C...
ins and del were introduced in HTML 4.0 to help au...
Table of contents Environment Preparation start 1...
Get the local public IP address through the conta...
I just bought an Alibaba Cloud host and couldn’t ...
I haven't worked with servers for a while. No...
I recently upgraded a test server operating syste...
Apache Tomcat is an open source software that imp...
Solution to forgetting MySQL password: [root@loca...
This article example shares the specific code of ...
1. Download the mysql tar file: https://dev.mysql...
<br />Table is a tag that has been used by e...
I believe everyone has used JD. There is a very c...
The hardware requirements for deploying Hyper-V a...