yuminge-app/yun-min-program-plugin-master/mycomponent/payKeyboard/numberKeyboard/numberKeyboard.js

198 lines
3.9 KiB
JavaScript

// mycomponent/payKeyboard/numberKeyboard/numberKeyboard.js
Component({
/**
* 组件的属性列表
*/
externalClasses: ['complate-class', 'close-btn-class', 'complate-text-class'],
properties: {
show: {
value: false,
type: Boolean
},
extraKey: {
value: '',
type: String
},
theme: {
value: "default",
type: String
},
title: {
value: '',
type: String
},
closeButtonText: {
value: '',
type: String
},
amountModel: {
value: false,
type: Boolean
},
numberKeyBoardCloseFn: {
type: Function
},
maxlength: {
value: 999,
type: Number
}
},
/**
* 组件的初始数据
*/
data: {
passKeyArr: [{
value: 1,
type: 'number'
},
{
value: 2,
type: 'number'
},
{
value: 3,
type: 'number'
},
{
value: 4,
type: 'number'
},
{
value: 5,
type: 'number'
},
{
value: 6,
type: 'number'
},
{
value: 7,
type: 'number'
},
{
value: 8,
type: 'number'
},
{
value: 9,
type: 'number'
},
{
value: 'icon-jianpan',
type: 'hidden'
},
{
value: 0,
type: 'number'
},
{
value: 'icon-fontclass-guanbi',
type: 'deleteBtn'
},
],
passValueArr: []
},
ready() {
if (this.data.extraKey != '') {
let obj = {
value: this.data.extraKey,
type: "number"
};
let passKeyArr = this.data.passKeyArr;
passKeyArr.splice(9, 1, obj);
this.setData({
passKeyArr
});
}
if (this.data.theme == "custom") {
let passKeyArr = this.data.passKeyArr;
passKeyArr.pop();
let obj1 = {
value: 0,
type: "number"
};
let obj2 = {
value: ".",
type: "number"
};
passKeyArr.splice(9, 1, obj1);
passKeyArr.splice(10, 1, obj2);
this.setData({
passKeyArr
});
}
},
/**
* 组件的方法列表
*/
methods: {
handClickPass(evt) {
let {
value,
type
} = evt.currentTarget.dataset;
if (type == "number") {
if (this.data.passValueArr.length >= this.data.maxlength) {
let floatNum = this.getFloatNum();
if ((value == "." && this.data.amountModel) || (this.data.amountModel && floatNum != -1 && floatNum < 2)) {
//这两种情况不return
} else {
return;
}
}
if (this.data.amountModel && value == ".") {
if (this.data.passValueArr.length == 0) return;
if (this.data.passValueArr.includes(".")) return;
}
if (this.data.amountModel) {
let floatNum = this.getFloatNum();
if (floatNum >= 2) return;
}
this.data.passValueArr.push(value);
} else if (type == "deleteBtn") {
this.data.passValueArr.pop();
} else if (type == "hidden") {
this.handHiddenKeyboard();
return;
}
let passValueArr = this.data.passValueArr;
this.setData({
passValueArr
});
this.triggerEvent("input", {
passValueArr,
value,
type
});
},
handHiddenKeyboard() {
let numberKeyBoardCloseFn = this.data.numberKeyBoardCloseFn;
if (numberKeyBoardCloseFn && (typeof numberKeyBoardCloseFn == 'function')) {
let flag = numberKeyBoardCloseFn();
if (!flag) return;
}
this.setData({
show: false
});
this.triggerEvent("hide");
},
//获取当前小数点后有几位
getFloatNum() {
let index = this.data.passValueArr.indexOf(".");
if (index >= 0) {
index++;
let len = this.data.passValueArr.length;
index = len - index;
}
return index;
}
}
});