基於微信小程序的票價和時間選擇以及計算總價


發布時間:2018-10-30
 
技術:wxml+wxss+JS
 

概述

微信小程序實現選擇時間和票價,根據選擇的票價和時間實時計算總價,當時間和票價都顯示缺貨狀態時,點擊彈出缺貨登記,需要選擇票價和時間才能點擊立即購買,否則彈出提示。

詳細

一、運行結果

 

頁面的功能代碼在ycselect文件夾內,index和list文件夾對此功能沒有作用,until文件夾里面是引入的小圖標。

360截圖20181026101545828.jpg

 

360截圖20181026103449482.jpg

 

360截圖20181026103000496.jpg

 

 

二、實現過程

1.下載的代碼解壓后放到某盤里面。

2.打開微信開發者工具點擊上方的項目》新建項目。

1.jpg

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

4.點確定即可。

2.jpg

三、主要代碼

 

頁面屬於靜態頁面,沒有與后台交互, 主要思想是需要選中時間和票價才能點擊下一步,用變量存時間(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);
        }
    }
});

 

 

四 、運行

點擊編譯可以在微信開發者工具預覽效果,點擊編譯后點擊預覽可以掃描二維碼在手機預覽。

 

360截圖20181026103546483.jpg

 

 

五、其他

暫時沒有

注:本文著作權歸作者,由demo大師發表,拒絕轉載,轉載需要作者授權


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM