uni-number-box插件的bug
- 如图计算 数量的插件
2.问题
当用户在 NumberBox 中输入字母等非法字符之后,会导致 NumberBox 数据紊乱的问题
解决:
代码如下:
_onBlur(event) {
// 官方的代码没有进行数值转换,用户输入的 value 值可能是非法字符:
// let value = event.detail.value;
// 将用户输入的内容转化为整数
let value = parseInt(event.detail.value);
if (!value) {
// 如果转化之后的结果为 NaN,则给定默认值为 1
this.inputValue = 1;
return;
}
// 省略其它代码...
}
-----------------------------------------
inputValue(newVal, oldVal) {
// if (+newVal !== +oldVal) {
// this.$emit("change", newVal);
// }
// 加2个条件 必须同时满足 && 新的值必须是 数字型 而且 不是小数
// + newVal 隐式转换 number includes(".")包括这个直接不要 输入的不能超过最大值 不能小于设置的最小值
if (+newVal !== +oldVal && +newVal && !String(newVal).includes(".") && +newVal >= this.min && +newVal <= this.max) {
this.$emit("change", newVal);
}
}