如何用element写数字输入框

本文详细介绍了如何在Vue中使用Element UI的输入框组件创建数字输入框,包括隐藏上下箭头、阻止非法字符输入和限制特定数值输入的方法。通过添加type属性和编写键盘监听事件,实现了更精细的输入控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于输入框,element给我们只举了几个简单的例子,而怎么把普通的输入框变成数字输入框,则只要在el-input上添加一个type属性,值为number就可以解决。

<el-input v-model="inputValue" placeholder="请输入数字" type="number"></el-input>

效果图
在这里插入图片描述
这样就可以单纯的只能输入文字,但是当选择文本框的时候,右边会显示2个小箭头,特别影响美观,强迫症的我肯定是要干掉的,于是输入以下代码

    input::-webkit-outer-spin-button,
    input::-webkit-inner-spin-button
    {
        -webkit-appearance:none ;
    }
    //firefox要用如下代码才能实现隐藏
    input[type="number"]{
        -moz-appearance:textfield ;
    }

其中 ::-webkit-outer-spin-button就是chrome的上下箭头,直接设置为none,就能使上下箭头隐藏起来,而 -webkit-inner-spin-button的具体是干嘛的,题主也不知道,不加入这个伪类,设置appearance的属性为none浏览器的上下小箭头一样会没掉。
(appearance 大概作用是改变浏览器上按钮或者控件的外观,比如值为button,在浏览器上就出现按钮的样式,但是试了很久,chrome、ie都没出现所说的效果,火狐有效果。
ie跟firefox浏览器时type=number是没效果的,需要自己写过滤事件(ie活该给骂是最垃圾的浏览器)

  • -moz:匹配baiFirefox浏览器
    -webkit:匹配Webkit枘核浏览器,如duchrome and safari
    -moz代表firefox浏览器私有属性-ms代表ie浏览器私有属性-webkit代表safari、chrome私有属性

本来以为这样功能就完成了,结果测试小姐姐来说,这个输入框可以输入字母e,这是因为e在数学上代表无理数,e是自然对数的底数,是一个无限不循环小数,其值是2.71828…,所以在输入e时,输入框认为是数字。竟然是bug,那就只能干掉。

  1. 增加键盘监听事件
    按键监听事件一共有3个可以选择,触发的顺序为 keydown -> keypress ->keyup。前面2个触发的时候文本还没输出到文本框,而keyup触发时浏览器已经将输入的数字渲染到文本框中,因此选择keydown、keypress都可以。
    由于el-input是一个vue组件,所以绑定事件时候要加上.native来监听原生事件,因为tyepe的属性在firefox跟ie没有效果,所以这边就直接通过写键盘监听事件来过来掉。
 <el-input v-model="inputValue" placeholder="请输入数字"  @keypress.native="numberInput"></el-input>

2.编写监听事件

	numberInput:function(e){
      e.returnValue=/\d/.test(e.key)
    }

通过e.key获取到按下去时按钮对应的字符,然后通过正则表达式判断该字符是否是数字,如果是的话返回true则会将输入的值显示到文本框,false则是取消这一默认行为。

全部代码如下 在vue的组件里编写的

<template>
  <div>
    <el-input v-model="inputValue" placeholder="请输入数字"  @keypress.native="numberInput"></el-input>
  </div>
</template>

<script>
export default {
  data() {
    return {
      inputValue: "",
    };
  },
  methods: {
    numberInput:function(e){
      // e.value = /[^\\d\\.]/.test(e.value)
      e.returnValue=/\d/.test(e.key)
      console.log(e);
    }
  }
};
</script>
<style>
input::-webkit-inner-spin-button {
  -webkit-appearance: none;
}
input[type="number"] {
  -moz-appearance: textfield;
}
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值