vue input输入框控制输入小数,负数,自动添加千分位符号

html部分

<input type="text" v-model="val" @input="sBind($event)"  @blur="aBind($event)" />

事件部分

aBind(ev){
				//为了去除最后一个. 
				 this.val = this.val.replace(/\.$/g, "");
			},
			sBind(ev) {
				var value = ev.target.value; 
				value = value.replace(/,/g, "")
				//先把非数字的都替换掉,除了数字和. -
				value = value.replace(/[^\d.-]/g, "");
				//必须保证第一个为数字而不是. 
				value = value.replace(/^\./g, "");
				//保证只有出现一个.而没有多个. 
				value = value.replace(/\.{2,}/g, ".");
				//保证.只出现一次,而不能出现两次以上 
				value = value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
				//如果第一位是负号,则允许添加  如果不允许添加负号 可以把这块注释掉
				if (value.indexOf("-") === 0) {
					value = value.replace(/-/g, "");
					value ="-"+value
				}else{
					value = value.replace(/-/g, "");
				}
				
				if(value.indexOf(".")!=-1){
					var arr = value.split('.')
					console.log("有小数点",arr[0]-0)
					var str = (arr[0]-0).toLocaleString()
					this.val = str + "." + arr[1]
				}else{
					console.log("没有小数点")
					this.val = (value-0).toLocaleString()
				}
				
				// if(value.indexOf(".")!=-1){
				// 	var arr = value.split('.')
				// 	console.log("有小数点",arr)
				// 	var str = arr[0].split('').reverse().join('')
				// 	str = str.replace(/(\d{3})(?=\d)/g, '$1,')
				// 	str = str.split('').reverse().join('')
				// 	this.val = str + "." + arr[1]
				// }else{
				// 	console.log("没有小数点")
				// 	var str = value.split('').reverse().join('')
				// 	str = str.replace(/(\d{3})(?=\d)/g, '$1,')
				// 	str = str.split('').reverse().join('')
				// 	this.val = str
				// }	
			},

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值