iView中的Input输入框虽然可以限制type="number",限制只能输入数字(任能输入小数点、+/-号),但是不能满足如下需求:
仅限制输入数字(整数)或者不带小数点,等其他随意限制的情况;另外希望VueJS原生的input也能限制自定义的输入。
实现
我们可以利用@on-keydown监听键盘输入的内容(keyCode),给需要能输入的内容加入白名单,不在白名单中的字符使用event.returnValue = false; 来达到不允许输入目的。
Html代码如下:
<i-input v-model="studentNum" class="my-input1" @on-keydown="checkMyInput1" type="number" style="width: 250px;" :maxlength="50">
<span slot="prepend" class="red-star">学生</span>
<span slot="append">人</span>
</i-input>
或者原生的情况:
<i-input v-model="studentNum" @on-keydown="checkMyInput1"> </i-input>
实现限制输入(白名单检测的JS)
checkMyInput1: function (event) {
var allowedKeyCodes = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57]; // 0-9键
allowedKeyCodes.push(8); // 返回键、删除键
// allowedKeyCodes.push(46); // 小数点
// allowedKeyCodes.push(45); // 负数-符号
if (allowedKeyCodes.indexOf(event.keyCode) < 0) {
event.returnValue = false;
// 如果有需要加进去允许的keycode,放到allowedKeyCodes里面去
console.warn('keyCode: ' + event.keyCode + ", not allowed")
}
}
文章评论