【JS】【28】让输入框只能输入正整数

<input type='text' onkeyup="value=value.replace(/^(0+)|[^\d]+/g,'')">

 

转载于:https://www.cnblogs.com/huashengweilong/p/11049442.html

### 创建只允许输入正整数的 Vue 输入框 为了创建一个仅接受正整数输入输入框,在 Vue 中可以利用 `v-model` 实现双向数据绑定,并通过事件处理函数过滤掉不符合条件的字符。下面是一个简单的例子,展示了如何构建这样一个组件。 #### 使用计算属性和侦听器的方法 ```javascript new Vue({ el: '#app', data() { return { positiveInteger: '' } }, watch: { positiveInteger(newValue) { this.positiveInteger = newValue.replace(/[^0-9]/g, ''); } } }); ``` 此方法中,每当 `positiveInteger` 的值发生变化时,都会触发对应的 watcher 函数,该函数会移除任何非数字字符[^1]。 #### 自定义指令方式 另一种更优雅的方式是使用自定义指令来拦截用户的键盘输入并阻止非法键入: ```html <template> <input v-positive-int="value"/> </template> <script> export default { directives: { 'positive-int': { inserted(el, binding) { function checkInput(event){ const keyCode = event.keyCode || event.which; if (keyCode < 48 || keyCode > 57){ // ASCII values for numbers are between 48 and 57. event.preventDefault(); } } el.addEventListener('keydown', checkInput); Object.defineProperty(binding.value, '_el_', { value: el }); }, unbind(el, binding) { if (!binding.value._el_) return; el.removeEventListener('keydown', e => {}); } } } } </script> ``` 上述代码片段展示了一个名为 `v-positive-int` 的自定义指令,它会在元素被插入到 DOM 后附加一个监听器以防止非数字按键按下;当组件销毁时也会清理这些监听器[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值