会员模块
This commit is contained in:
115
components/milliliter-input/milliliter-input.js
Normal file
115
components/milliliter-input/milliliter-input.js
Normal file
@@ -0,0 +1,115 @@
|
||||
// components/milliliter-input/milliliter-input.js
|
||||
|
||||
/** 附带输入框的数字拨盘自定义组件,封装了milliliter自定义组件
|
||||
* 在引用页面使用 this.selectComponent() 获取组件对象,调用 number 可获取组件值
|
||||
* careate by DH.tab
|
||||
* 2021/07/14
|
||||
*/
|
||||
Component({
|
||||
/**
|
||||
* 组件的属性列表
|
||||
*/
|
||||
properties: {
|
||||
/** 最大值 */
|
||||
max: { type: Number, value: 120 },
|
||||
/** 最小值 */
|
||||
min: { type: Number, value: 0 },
|
||||
/** 值 */
|
||||
value: { type: Number, value: 0 },
|
||||
/** 单位名称 */
|
||||
unitName: { type: String },
|
||||
/** 单位值 */
|
||||
unitVal: { type: String, value: '厘米' },
|
||||
/** 是否精确到3位小数 */
|
||||
float: { type: Boolean, value: false },
|
||||
/** 是否不可为空 */
|
||||
noEmpty: { type: Boolean, value: false },
|
||||
},
|
||||
|
||||
/**
|
||||
* 组件的初始数据
|
||||
*/
|
||||
data: {
|
||||
number: 0,
|
||||
isblur: true,
|
||||
first: true
|
||||
},
|
||||
|
||||
attached() {
|
||||
if(this.data.unitName == '身高') {
|
||||
this.setData({ number: 160 })
|
||||
} else {
|
||||
this.setData({ number: 65 })
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 组件的方法列表
|
||||
*/
|
||||
methods: {
|
||||
/** 数字拨盘值改变事件 */
|
||||
changeNumber(e) {
|
||||
if (this.data.first)
|
||||
this.setData({ first: false })
|
||||
else
|
||||
this.setData({ number: e.detail })
|
||||
},
|
||||
|
||||
// 文本框获得焦点
|
||||
onNumberFocus(e) {
|
||||
this.setData({ isblur: false })
|
||||
},
|
||||
|
||||
// 文本框输入事件
|
||||
onNumberInput(e) {
|
||||
let val = e.detail.value
|
||||
|
||||
// 检查是否出现多个小数点
|
||||
let a = val.toString().indexOf('.'),
|
||||
b = val.toString().lastIndexOf('.'),
|
||||
res = '';
|
||||
|
||||
if (a != b) {
|
||||
let t = val.toString().split('')
|
||||
t.splice(t.lastIndexOf('.'), 1)
|
||||
res = t.join('')
|
||||
this.setData({ number: res })
|
||||
}
|
||||
},
|
||||
|
||||
// 文本框失去焦点
|
||||
onNumberBlur(e) {
|
||||
let val = e.detail.value
|
||||
|
||||
// 检查输入值是否溢出上限或下限
|
||||
if (parseInt(val) > this.data.max)
|
||||
val = this.data.max
|
||||
if (parseInt(val) < this.data.min)
|
||||
val = this.data.min
|
||||
|
||||
// 检查是否需要保留2位小数
|
||||
if (this.data.float) {
|
||||
let t = val.toString().split('.')
|
||||
if (t.length > 1 && t[1].length > 3)
|
||||
val = `${t[0]}.${t[1].substr(0, 3)}`
|
||||
this.setData({
|
||||
value: parseFloat(val),
|
||||
number: parseFloat(val)
|
||||
})
|
||||
} else {
|
||||
let tmp = val.toString().split('.')
|
||||
if (tmp.length > 1)
|
||||
this.setData({
|
||||
value: parseFloat(tmp[0] + '.' + tmp[1].substr(0, 1)),
|
||||
number: parseFloat(tmp[0] + '.' + tmp[1].substr(0, 1))
|
||||
})
|
||||
else
|
||||
this.setData({
|
||||
value: parseFloat(val),
|
||||
number: parseFloat(val)
|
||||
})
|
||||
}
|
||||
this.setData({ isblur: true })
|
||||
},
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user