handleInput(e) { // 通过正则过滤小数点后两位 e.target.value = (e.target.value.match(/^\d*(\.?\d{0,1})/g)[0]) || null},Vue 限制input输入数字 不可._vue number 小数">
赞
踩
- 限制input输入 小数点后两位number
- <input type="number" @keydown="handleInput" placeholder="请输入或查看" v-model="item.SalePrice">
-
- handleInput(e) {
- // 通过正则过滤小数点后两位
- e.target.value = (e.target.value.match(/^\d*(\.?\d{0,1})/g)[0]) || null
- },
-
-
- Vue 限制input输入数字 不可小数
- <input type="number" @keydown="handleInput" placeholder="请输入" v-model="SaleQty">
- handleInput(e) {
- // log(e.target.value)
- e.target.value=e.target.value.replace(/[^\d]/g,'');
- },
上述方法有个问题,那就是输入小数点后,删除会删掉小数点后两位,有哪位大神解决了可以在评论区告诉我,下述方法可以解决上述问题,然而有个小问题就是输入0后除了输入小数点,点其他数字无反应
- <input class="money-input"
- :class="inputMoney ? 'font-bold font-24' : 'font-18'"
- type="number"
- maxlength="1000000"
- placeholder="请输入加油金额"
- oninput="if(value.length>8)value=value.slice(0,8)"
- @input="handleInput"
- v-model="inputMoney" />
-
-
-
- handleInput(e) {
- const inputStr = e.target.value
- // 只能输入两位小数的数字
- const result = inputStr.match(/(0|[1-9]\d*)?(\.\d{0,2})?/)
- this.inputMoney = parseFloat(result);
- },
第三种方法
- <input
- type="number"
- v-model="amount"
- maxlength="12"
- @input="handleInput"
- placeholder="请输入您的提现额度"
- />
-
-
- // 检查输入
- handleInput() {
- let price = "" + this.amount;
- price = price
- .replace(/[^\d.]/g, "") // 清除“数字”和“.”以外的字符
- .replace(/\.{2,}/g, ".") // 只保留第一个. 清除多余的
- .replace(".", "$#$")
- .replace(/\./g, "")
- .replace("$#$", ".")
- .replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3"); // 只能输入两个小数
- if (price.length > 8) {
- //限制最多输入八位字符
- price = price.slice(0, 8);
- }
- if (price.indexOf(".") < 0 && price != "") {
- // 以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
- price = parseFloat(price);
- }
- this.amount = price;
- },
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。