解决vue input或el-input type="number"输入数字,去除右侧箭头问题

 更新时间:2025年10月20日 09:17:57   作者:lianghaibos  
文章讨论了在input或el-input控件中设置type=number时,如何去除右侧上下箭头,针对el-input,推荐使用/deep/深度选择器穿透scoped样式限制进行样式覆盖,并介绍了其适用场景及注意事项

一、具体问题为

input或者el-input中添加type=number来控制只可输入数字。

但随之而来的问题是 输入框右侧会有个上下调整箭头

二、解决方法

2.1、input

常用的解决方法,实际是将控制显示箭头的 css样式去掉;

但少部分会不好用,因此可以添加个class来指定。

<template>
    <Input v-model="value" placeholder="微信内部号码" type="number" number="true" class="aaaa"  :maxlength="20" clearable style="width:80%;ime-mode:Disabled" @on-keydown="changeaa(event)">
      <span slot="prepend">微信</span>
     </Input>
</template>
<script>
    export default {
        data () {
            return {
                value: ''
            }
        },
      methods:{
        changeaa(event){
            //禁止非数字字符输入
          if(event.keyCode<48||event.keyCode>57)event.returnValue=false;
        }
      }
    }
</script>
<style>
.aaaa input::-webkit-outer-spin-button,
.aaaa input::-webkit-inner-spin-button {
    -webkit-appearance: none;
}
.aaaa input[type="number"] {
    -moz-appearance: textfield;
}
</style>

2.2、el-input

不过对于el-input此方法仍然不好用

其中

v-model.number 使用修饰符.number可以将输入的数据转换为Number类型,否则虽然你输入的是数字.但仍为子串类型

然后我们将type设置为number,但发现 样式设置后,仍不生效。

因此,使用/deep/

<el-form-item label="测试数字编号" prop="departnum_id">
     <el-input v-model.number="deptForm.departnum_id" type="number" class="numrule":min="0" :max="99999" placeholder="11001" />
</el-form-item>

<style lang="css" scoped>
  /deep/.numrule input::-webkit-outer-spin-button,
  /deep/.numrule input::-webkit-inner-spin-button {
    -webkit-appearance: none!important;
  }
  /deep/.numrule input[type="number"]{
    -moz-appearance: textfield;
  }
  </style>

2.3 、/deep/

vue /deep/深度选择器

作用

vue官方是说明deep用法。

为了保证每个组件的css唯一性,避免污染全局或者被全局污染,vue提供了scoped作用域

<style scoped>
.a >>> .b { /* ... */ }
</style>

vue官方对于deep选择器的说明

2.3.1 使用场景

我们知道在vue组件中样式中添加 scoped,那么这个样式就会被设定为只影响这个vue组件内的内容

假定某个vue组件又引用了element-ui 亦或者其他UI组件;

此时 UI不满意element-ui的样式,想要在这个页面微调下element-ui的页面;

但不能影响全局element-ui组件样式。

那么我们就需要使用/deep/ 来穿透scoped。

<style lang="scss" scoped>
.a /deep/ .b {
  ......
  /deep/ .c {
    ....
  }
}
</style>

2.3.2 注意事项

1、由于deep是vue-loader中的标准。并不是现行的 css标准。无论是 vue-cli2 中的static文件夹以及vue-cli3中的public文件夹都是仅仅执行了copy_webpack_plugin 所以两者中的css不能使用/deep/选择器。

2、deep不可以嵌套使用。嵌套使用的话,内层的deep不会被正确打包

& /deep/ .isModify{
  & /deep/  .el-input__inner{
        border-color: #f6dfd4;
        background-color: #fff4ef;
        color: #ff6000;;
    }
}

3、在Chrome浏览器下是没有问题的,但是在其他浏览器上就完全不可行了

因为/deep/选择器这个是chrome浏览器自己的标准,其他浏览器并没有实现这个标准,所以其他浏览器是失效的。

有意思的是,google说会在chrome的63这个版本,移除/deep/的支持,不知道为啥现在最新的还是会有?

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue vant使用ImagePreview实现预览图片

    Vue vant使用ImagePreview实现预览图片

    这篇文章主要介绍了Vue vant使用ImagePreview实现预览图片,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue中子组件如何间接修改父组件传递过来的值问题

    vue中子组件如何间接修改父组件传递过来的值问题

    这篇文章主要介绍了vue中子组件如何间接修改父组件传递过来的值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • vue实现后台管理权限系统及顶栏三级菜单显示功能

    vue实现后台管理权限系统及顶栏三级菜单显示功能

    这篇文章主要介绍了vue实现后台管理权限系统及顶栏三级菜单显示功能,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • vxe-table中vxe-grid的使用解读

    vxe-table中vxe-grid的使用解读

    这篇文章主要介绍了vxe-table中vxe-grid的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • 前端实现简单的sse封装方式(React hook Vue3)

    前端实现简单的sse封装方式(React hook Vue3)

    这篇文章主要介绍了前端实现简单的sse封装方式(React hook Vue3),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • vue中实时监听div元素盒子的宽高方法

    vue中实时监听div元素盒子的宽高方法

    这篇文章主要给大家介绍了关于vue中如何实时监听div元素盒子的宽高的相关资料,在Vue中你可以使用Vue的计算属性和侦听器来动态监测元素的高度,文中给出了简单代码示例,需要的朋友可以参考下
    2023-09-09
  • 使用mockjs如何生成随机数据

    使用mockjs如何生成随机数据

    Mockjs是一个用于生成随机数据和拦截Ajax请求的库,可以与Vue和Axios结合使用,提高前端开发效率,通过在项目中引入Mock.js文件,可以模拟后端API,拦截Ajax请求并返回自定义响应,这种方法适用于在后端尚未开发完成时的前端开发测试
    2024-10-10
  • Vue自定义指令学习及应用详解

    Vue自定义指令学习及应用详解

    这篇文章主要为大家详细介绍了Vue中自定义指令的学习以及如何利用Vue制作一个简单的学生信息管理系统,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-05-05
  • Vue多组件仓库开发与发布详解

    Vue多组件仓库开发与发布详解

    这篇文章主要介绍了Vue多组件仓库开发与发布详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • vue实现websocket客服聊天功能

    vue实现websocket客服聊天功能

    这篇文章主要为大家详细介绍了vue实现websocket客服聊天功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10

最新评论