vue限制只能输入数字_vue的input中,如何限制只能输入number

本来想用watch观察v-model的值,一旦不是数字,就让新值等于旧值,后来发现不行。h5的type=”number”属性在手机上无效。有什么比较好的方法吗

<input v-model="num">

type=”tel”的作用是直接弹出数字键盘吧,这样好像也不错

不是推荐用computed么?

<div id="demo">

<input v-model="inpNum"/>

<p>

{{inpNum}}

</p>

</div>

new Vue({

el:'#demo',

data:{

oldNum:0

},

computed:{

inpNum:{

get:function(){

return this.oldNum;

},

set:function(newValue){

this.oldNum=newValue.replace(/[^\d]/g,'');

}

}

}

})

不过如果你说的是在输入过程中就改。。。那样用户体验未免有点。。。。

<input v-model.number="age" type="number">

实现思路:就是不要用 v-model, 然后自己监测值的变化,在监测事件中进行值的判断。

参考: http://jsbin.com/nabafidapu/1…

如果是在移动端的话,可以这么做:

<input type="text" pattern="[0-9]*">

<input type="tel">

//<input v-model="num" v-number-only />

Vue.directive('numberOnly', {

bind: function () {

this.handler = function () {

this.el.value = this.el.value.replace(/\D+/, '')

}.bind(this)

this.el.addEventListener('input', this.handler)

},

unbind: function () {

this.el.removeEventListener('input', this.handler)

}

})

input type=”tel”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值