实现效果ios 下不能输入中文等特殊字符,除了小数点.,保留两位小数。
vue使用原生input时候出现的问题:ios下中文输入验证问题
解决方式:
1.
<input type="text" v-model.trim="priceAll" inputmode="decimal" placeholder="0.00" @keyup="handlePrice(priceAll)"/>
HTML 原生的 type="number"
属性在 iOS 和 Android 系统上都存在一定问题,比如 maxlength 属性不生效、无法获取到完整的输入内容等。
2.验证输入框的值:
handlePrice(val){
if (val !== '' && val.substr(0, 1) === '.') {
val = "";
}
val = val.replace(/^0*(0.|[1-9])/, '$1');//解决 粘贴不生效
val = val.replace(/[^d.]/g, ""); 清除“数字”和“.”以外的字符
val = val.replace(/.{2,}/g, "."); 只保留第一个. 清除多余的
val = val.replace(".", "$#$").replace(/./g, "").replace("$#$", ".");
val = val.replace(/^(-)*(d+).(dd).*$/, '$1$2.$3');//只能输入两个小数
if (val.indexOf(".") < 0 && val !== "") {
if (val.substr(0, 1) === '0' && val.length === 2) {
val = val.substr(1, val.length);
}
}
this.priceAll = this.priceOne = val;
console.log(val,"价格");
}