电影票预订座位前端js

095146_Hg98_555061.png

<!doctype html>


<html>

<head>

<title>JSC Demo</title>

<link href='http://fonts.googleapis.com/css?family=Lato:400,700' rel='stylesheet' type='text/css'>

<link rel="stylesheet" type="text/css" href="jQuery-Seat-Charts/jquery.seat-charts.css">

<link rel="stylesheet" type="text/css" href="style.css">

</head>

<body>

<div class="wrapper">

<div class="container">

<div id="seat-map">

<div class="front-indicator">Front</div>

</div>

<div class="booking-details">

<h2>Booking Details</h2>

<h3> Selected Seats (<span id="counter">0</span>):</h3>

<ul id="selected-seats"></ul>

Total: <b>$<span id="total">0</span></b>

<button class="checkout-button">Checkout &raquo;</button>

<div id="legend"></div>

</div>

</div>

</div>

<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>

<script src="jQuery-Seat-Charts/jquery.seat-charts.js"></script>

<script>

var firstSeatLabel = 1;

$(document).ready(function() {

var $cart = $('#selected-seats'),

$counter = $('#counter'),

$total = $('#total'),

sc = $('#seat-map').seatCharts({

map: [

'ff_ff',

'ff_ff',

'ee_ee',

'ee_ee',

'ee___',

'ee_ee',

'ee_ee',

'ee_ee',

'eeeee',

],

seats: {

f: {

price   : 100,

classes : 'first-class', //your custom CSS class

category: 'First Class'

},

e: {

price   : 40,

classes : 'economy-class', //your custom CSS class

category: 'Economy Class'

}

},

naming : {

top : false,

getLabel : function (character, row, column) {

return firstSeatLabel++;

},

},

legend : {

node : $('#legend'),

   items : [

[ 'f', 'available',   'First Class' ],

[ 'e', 'available',   'Economy Class'],

[ 'f', 'unavailable', 'Already Booked']

   ]

},

click: function () {

if (this.status() == 'available') {

//let's create a new <li> which we'll add to the cart items

$('<li>'+this.data().category+' Seat # '+this.settings.label+': <b>$'+this.data().price+'</b> <a href="#" class="cancel-cart-item">[cancel]</a></li>')

.attr('id', 'cart-item-'+this.settings.id)

.data('seatId', this.settings.id)

.appendTo($cart);

/*

* Lets update the counter and total

*

* .find function will not find the current seat, because it will change its stauts only after return

* 'selected'. This is why we have to add 1 to the length and the current seat price to the total.

*/

$counter.text(sc.find('selected').length+1);

$total.text(recalculateTotal(sc)+this.data().price);

return 'selected';

} else if (this.status() == 'selected') {

//update the counter

$counter.text(sc.find('selected').length-1);

//and total

$total.text(recalculateTotal(sc)-this.data().price);

//remove the item from our cart

$('#cart-item-'+this.settings.id).remove();

//seat has been vacated

return 'available';

} else if (this.status() == 'unavailable') {

//seat has been already booked

return 'unavailable';

} else {

return this.style();

}

}

});


//this will handle "[cancel]" link clicks

$('#selected-seats').on('click', '.cancel-cart-item', function () {

//let's just trigger Click event on the appropriate seat, so we don't have to repeat the logic here

sc.get($(this).parents('li:first').data('seatId')).click();

});


//let's pretend some seats have already been booked

sc.get(['1_2', '4_1', '7_1', '7_2']).status('unavailable');

});


function recalculateTotal(sc) {

var total = 0;

//basically find every selected seat and sum its price

sc.find('selected').each(function () {

total += this.data().price;

});

return total;

}

</script>

</body>

</html>


转载于:https://my.oschina.net/u/555061/blog/471810

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值