發布時間:2018-10-30
技術:wxml+wxss+JS
概述
微信小程序實現選擇時間和票價,根據選擇的票價和時間實時計算總價,當時間和票價都顯示缺貨狀態時,點擊彈出缺貨登記,需要選擇票價和時間才能點擊立即購買,否則彈出提示。
詳細
一、運行結果
頁面的功能代碼在ycselect文件夾內,index和list文件夾對此功能沒有作用,until文件夾里面是引入的小圖標。



二、實現過程
1.下載的代碼解壓后放到某盤里面。
2.打開微信開發者工具點擊上方的項目》新建項目。

3.新建項目的項目目錄選擇代碼所在的位置,AppID可以點擊測試號的小程序自動生成、項目名稱可根據自己喜好來取。
4.點確定即可。

三、主要代碼
頁面屬於靜態頁面,沒有與后台交互, 主要思想是需要選中時間和票價才能點擊下一步,用變量存時間(time_num)、票價(price_num)、總價(select_total)、數量(num),當選擇了時間和票價后,對應的值存到對應的變量,在點擊加減數量時,就可以取變量的值計算總價並存到select_total。數量小於1則禁用減號,最多可以選擇10個。
缺貨登記彈框默認隱藏,當點擊缺貨時間或票價時彈框顯示出來,只需要給缺貨的時間和票價添加id(disabed)就可以了。點開缺貨登記需要輸入手機號,正則驗證通過才能提交登記。
Page({
data: {
stockFlag: true,//缺貨登記
show:false,//控制下拉列表的顯示隱藏,false隱藏、true顯示
selectData:['1','2','3','4','5','6','7','8','9'],//下拉列表的數據
index:0,//選擇的下拉列表下標
phone: '', //手機號
number: '', //數量
showMessage:false, //點擊彈出的缺貨登記提示顯示
messageContent: '',//點擊彈出的缺貨登記提示內容
submitMessage:false, //點擊彈出的缺貨登記提示顯示
time:"", //默認選中第一個時間
price:"", //默認選中第一個不是缺貨的時間
time_num:"", //默認選中第一個時間下標
price_num:"", //默認選中第一個不是缺貨的時間下標
select_total:0, //總票價
num: 1, //默認選擇的票價數量
minusStatus: 'disabled ' //數量小於1禁止點擊狀態
},
onload:function(){
},
selectTap: function (e) {// 點擊下拉顯示框
this.setData({
show: !this.data.show
});
},
optionTap: function (e) { // 點擊下拉列表
var Index=e.currentTarget.dataset.index;//獲取點擊的下拉列表的下標
this.setData({
index:Index,
show:!this.data.show
});
},
phoneInput: function(e) { //監聽手機號輸入
this.data.phone = e.detail.value;
},
wordInput: function(e) { //監聽留言輸入
this.data.word = e.detail.value;
},
stockRefer: function() {
var _index = this.data.index;//點擊數量的下標
var _phone = this.data.phone;//手機號
var _num = this.data.selectData[_index];//下拉選擇的數量
var _word = this.data.word;//留言
console.log(_phone);
console.log(_num);
console.log(_word);
var telRule = /^1[3|4|5|7|8]\d{9}$/; //驗證手機號
if(_phone == ''){
this.showMessage('手機號不能為空');
}else if(!telRule.test(_phone)){
this.showMessage('手機號格式不正確');
}
},
showMessage: function(text) { //打開關閉提示彈框
var that = this;
that.setData({
showMessage: true,
messageContent: text
});
setTimeout(function(){
that.setData({
showMessage: false,
messageContent: ''
})
}, 3000)
},
selectTime:function(e){ //點擊選擇時間
var _time=e.currentTarget.dataset.time; //點擊選擇獲取時間
var _num=e.currentTarget.dataset.num; //點擊選擇獲取時間的下標
this.setData({
time_num:_num,
time:_time
})
},
selectPrice: function (e) { //選擇時間
var _price=e.currentTarget.dataset.price; //點擊選擇獲取價格
var _num=e.currentTarget.dataset.num; //點擊選擇獲取價格的下標
var totalPrice=this.data.num*_price;
var _id = e.target.id;
if(_id=="disabled"){// 判斷當缺貨時打開缺貨登記
this.setData({
stockFlag:false
})
}else{ // 當點擊非缺貨時
this.setData({
price_num:_num,
price:_price,
select_total:totalPrice
});
}
},
stockHide: function (e) { // 關閉缺貨登記
this.setData({
stockFlag:true
})
},
/* 點擊減號 */
bindMinus: function() {
var num = this.data.num; //選擇的數量
var price= this.data.price; //選中的票價
// 如果大於1時,才可以減
if (num > 1) {
num --;
}
// 只有大於一件的時候,才能normal狀態,否則disable狀態
var minusStatus = num <= 1 ? 'disabled' : 'normal';
var totalPrice=num*price;
// 將數值與狀態寫回
this.setData({
num: num,
minusStatus: minusStatus,
select_total:totalPrice
});
},
/* 點擊加號 */
bindPlus: function() {
var num = this.data.num;
var price= this.data.price; //選中的票價
// 數量最多可以選擇10件
if (num < 10) {
num ++;
}
// 只有大於一件的時候,才能normal狀態,否則disable狀態
var minusStatus = num < 1 ? 'disabled' : 'normal';
var totalPrice=num*price;
// 將數值與狀態寫回
this.setData({
num: num,
minusStatus: minusStatus,
select_total:totalPrice
});
},
submitClick:function() {
var that = this;
var num = this.data.num; //選擇的數量
var price = this.data.price; //選中的票價
var time = this.data.time; //選中的時間
var total = this.data.select_total; //總價格
if (price == ''||time == '') {
that.setData({
submitMessage: true
});
setTimeout(function () {
that.setData({
submitMessage: false
})
}, 3000)
} else {
console.log(time);
console.log(price);
console.log(num);
console.log(total);
}
}
});
四 、運行
點擊編譯可以在微信開發者工具預覽效果,點擊編譯后點擊預覽可以掃描二維碼在手機預覽。

五、其他
暫時沒有
