[轉]微信小程序之購物數量加減 —— 微信小程序實戰商城系列(3)


本文轉自:http://blog.csdn.net/michael_ouyang/article/details/70194144

我們在購買寶貝的時候,購物的數量,經常是我們需要使用的,如下所示:

在寶貝詳情頁里:

在購物車里:

 

現在就為大家介紹這個小組件,在小程序中,該如何去寫

下圖為本項目的圖:

 

 

wxml

  1. <!-- 主容器 -->  
  2. <view class="stepper">  
  3.     <!-- 減號 -->  
  4.     <text class="{{minusStatus}}" bindtap="bindMinus">-</text>  
  5.     <!-- 數值 -->  
  6.     <input type="number" bindchange="bindManual" value="{{num}}" />  
  7.     <!-- 加號 -->  
  8.     <text class="normal" bindtap="bindPlus">+</text>  
  9. </view>  
<!-- 主容器 -->
<view class="stepper">
	<!-- 減號 -->
	<text class="{{minusStatus}}" bindtap="bindMinus">-</text>
	<!-- 數值 -->
	<input type="number" bindchange="bindManual" value="{{num}}" />
	<!-- 加號 -->
	<text class="normal" bindtap="bindPlus">+</text>
</view>

wxss

  1. /*全局樣式*/  
  2. page {  
  3.     padding: 20px 0;  
  4. }  
  5.   
  6. /*主容器*/  
  7. .stepper {  
  8.     width: 80px;  
  9.     height: 26px;  
  10.     /*給主容器設一個邊框*/  
  11.     border: 1px solid #ccc;  
  12.     border-radius: 3px;  
  13.     margin:auto;  
  14. }  
  15.   
  16. /*加號和減號*/  
  17. .stepper text {  
  18.     width: 19px;  
  19.     line-height: 26px;  
  20.     text-align: center;  
  21.     float: left;  
  22. }  
  23.   
  24. /*數值*/  
  25. .stepper input {  
  26.     width: 40px;  
  27.     height: 26px;  
  28.     float: left;  
  29.     margin: auto;  
  30.     text-align: center;  
  31.     font-size: 12px;  
  32.     /*給中間的input設置左右邊框即可*/  
  33.     border-left: 1px solid #ccc;  
  34.     border-right: 1px solid #ccc;  
  35. }  
  36.   
  37. /*普通樣式*/  
  38. .stepper .normal{  
  39.     color: black;  
  40. }  
  41.   
  42. /*禁用樣式*/  
  43. .stepper .disabled{  
  44.     color: #ccc;  
  45. }  
/*全局樣式*/
page {
	padding: 20px 0;
}

/*主容器*/
.stepper {
	width: 80px;
	height: 26px;
	/*給主容器設一個邊框*/
	border: 1px solid #ccc;
	border-radius: 3px;
	margin:0 auto;
}

/*加號和減號*/
.stepper text {
	width: 19px;
	line-height: 26px;
	text-align: center;
	float: left;
}

/*數值*/
.stepper input {
	width: 40px;
	height: 26px;
	float: left;
	margin: 0 auto;
	text-align: center;
	font-size: 12px;
	/*給中間的input設置左右邊框即可*/
	border-left: 1px solid #ccc;
	border-right: 1px solid #ccc;
}

/*普通樣式*/
.stepper .normal{
	color: black;
}

/*禁用樣式*/
.stepper .disabled{
	color: #ccc;
}

 

js

[javascript] view plain copy print?
  1. Page({  
  2.     data: {  
  3.         // input默認是1  
  4.         num: 1,  
  5.         // 使用data數據對象設置樣式名  
  6.         minusStatus: 'disabled'  
  7.     },  
  8.     /* 點擊減號 */  
  9.     bindMinus: function() {  
  10.         var num = this.data.num;  
  11.         // 如果大於1時,才可以減  
  12.         if (num > 1) {  
  13.             num --;  
  14.         }  
  15.         // 只有大於一件的時候,才能normal狀態,否則disable狀態  
  16.         var minusStatus = num <= 1 ? 'disabled' : 'normal';  
  17.         // 將數值與狀態寫回  
  18.         this.setData({  
  19.             num: num,  
  20.             minusStatus: minusStatus  
  21.         });  
  22.     },  
  23.     /* 點擊加號 */  
  24.     bindPlus: function() {  
  25.         var num = this.data.num;  
  26.         // 不作過多考慮自增1  
  27.         num ++;  
  28.         // 只有大於一件的時候,才能normal狀態,否則disable狀態  
  29.         var minusStatus = num < 1 ? 'disabled' : 'normal';  
  30.         // 將數值與狀態寫回  
  31.         this.setData({  
  32.             num: num,  
  33.             minusStatus: minusStatus  
  34.         });  
  35.     },  
  36.     /* 輸入框事件 */  
  37.     bindManual: function(e) {  
  38.         var num = e.detail.value;  
  39.         // 將數值與狀態寫回  
  40.         this.setData({  
  41.             num: num  
  42.         });  
  43.     }  
  44. })  
Page({
	data: {
		// input默認是1
		num: 1,
		// 使用data數據對象設置樣式名
		minusStatus: 'disabled'
	},
	/* 點擊減號 */
	bindMinus: function() {
		var num = this.data.num;
		// 如果大於1時,才可以減
		if (num > 1) {
			num --;
		}
		// 只有大於一件的時候,才能normal狀態,否則disable狀態
		var minusStatus = num <= 1 ? 'disabled' : 'normal';
		// 將數值與狀態寫回
		this.setData({
			num: num,
			minusStatus: minusStatus
		});
	},
	/* 點擊加號 */
	bindPlus: function() {
		var num = this.data.num;
		// 不作過多考慮自增1
		num ++;
		// 只有大於一件的時候,才能normal狀態,否則disable狀態
		var minusStatus = num < 1 ? 'disabled' : 'normal';
		// 將數值與狀態寫回
		this.setData({
			num: num,
			minusStatus: minusStatus
		});
	},
	/* 輸入框事件 */
	bindManual: function(e) {
		var num = e.detail.value;
		// 將數值與狀態寫回
		this.setData({
			num: num
		});
	}
})

運行結果:

 

demo下載地址:http://download.csdn.net/detail/michael_ouyang/9815524

 

 

更多小程序的教程

 

 

微信開發者工具的快捷鍵

微信小程序的文件結構 —— 微信小程序教程系列(1)

微信小程序的生命周期實例演示 —— 微信小程序教程系列(2)

微信小程序的動態修改視圖層的數據 —— 微信小程序教程系列(3)

微信小程序的新建頁面 —— 微信小程序教程系列(4)

微信小程序的如何使用全局屬性 —— 微信小程序教程系列(5)

微信小程序的頁面跳轉 —— 微信小程序教程系列(6)

微信小程序標題欄和導航欄的設置 —— 微信小程序教程系列(7)

微信小程序的作用域和模塊化 —— 微信小程序教程系列(8)

微信小程序視圖層的數據綁定 —— 微信小程序教程系列(9)

微信小程序視圖層的條件渲染 —— 微信小程序教程系列(10)

微信小程序視圖層的列表渲染 —— 微信小程序教程系列(11)

微信小程序視圖層的模板 —— 微信小程序教程系列(12)

微信小程序wxss的尺寸單位rpx —— 微信小程序教程系列(13)

微信小程序的網絡請求 —— 微信小程序教程系列(14)

微信小程序的百度地圖獲取地理位置 —— 微信小程序教程系列(15)

微信小程序使用百度api獲取天氣信息 —— 微信小程序教程系列(16)

微信小程序獲取系統日期和時間 —— 微信小程序教程系列(17)

微信小程序之頂部導航欄實例 —— 微信小程序實戰系列(1)

微信小程序之上拉加載(分頁加載)實例 —— 微信小程序實戰系列(2)

微信小程序之輪播圖實例 —— 微信小程序實戰系列(3)

微信小程序之仿android fragment之可滑動的底部導航欄實例  —— 微信小程序實戰系列(4)

 

微信小程序之登錄頁實例 —— 微信小程序實戰系列(5)

微信小程序之自定義toast實例 —— 微信小程序實戰系列(6)

微信小程序之自定義抽屜菜單(從下拉出)實例 —— 微信小程序實戰系列(7)

微信小程序之自定義模態彈窗(帶動畫)實例 —— 微信小程序實戰系列(8)

微信小程序之側欄分類 —— 微信小程序實戰商城系列(1)

微信小程序之仿淘寶分類入口 —— 微信小程序實戰商城系列(2)

 

更多小程序的教程請查看:http://blog.csdn.net/michael_ouyang/article/details/54700871

謝謝觀看,不足之處,敬請指導

 

 

        版權聲明:本文為博主原創文章,轉載務必注明出處,http://blog.csdn.net/michael_ouyang。     
  • 本文已收錄於以下專欄:
  •                                       
  • 微信小程序欄目

 


免責聲明!

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



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