当前位置: 首页 > 知识库问答 >
问题:

前端 - el-input框输入的问题?

沃学
2024-03-27

el-input框输入的问题
el-input是通过封装的,在data里面是这样使用的,代码如下
userName: {

type: 'input',label: '用户名',required: true,

},
现在的赋值
const res = await getCompanyInfo()

 this.formData.userName = res.data.companyCodeif (this.formData.userName.length <= 5) {  this.formData.userName = res.data.companyCode.slice(0, 5);}

res.data.companyCode是接口api返回来的数据固定的字段,显示在页面上
现在的需求是 返回来的字段是固定的不能让客户删除,只能在固定的字段后面添加跟删除,现在想要在input里面监听@input="handleInput" 可是在data里怎么写上@input="handleInput",如果不在data里面写@input="handleInput"这个 ,大佬们,在this.formData.userName = res.data.companyCode又该怎么实现前面的字段是固定的,后面的字符可增可减呢

if (this.formData.userName.length <= 5) {

  this.formData.userName = res.data.companyCode.slice(0, 5);}

尝试着这样写 没效果, input框里光标 还会把固定的字段清空

共有4个答案

束阳旭
2024-03-27

是这种效果吗?

<template>  <el-input v-model="reSetVal" v-append-text="preVal" @change="$emit('change', $event)"></el-input></template><script>export default {  name: "testComponent",  model: {    prop: 'value',    event: 'change'  },  props: ["value"],  directives: {    appendText: {      update(el, binding, vnode) {        el.addEventListener('input', function(event) {          if(event.target.value.length < binding.value.length){            vnode.componentInstance.$emit('input', binding.value);          }        });      }    }  },  watch:{    value(newVal, oldVal){      this.reSetVal = newVal;      this.preVal = newVal.slice(0, 5);    }  },  data(){    return {      preVal: "",      reSetVal: ""    }  }}</script>
盖高畅
2024-03-27

既然返回的字段是固定的,直接用prepend带在input前面不就行了吗?

梁丘缪文
2024-03-27

修改封装的组件 使其支持自定义input事件

令狐烨烨
2024-03-27

为了实现您的需求,即让 el-input 框中的前五个字符固定不可删除,但可以在后面添加和删除字符,您需要做一些调整。这里的关键在于监听输入框的输入事件,并在事件处理函数中控制输入内容。

首先,您不能在 data 对象中直接绑定 @input 事件,因为 data 对象用于存储数据,而不是处理事件。事件应该在模板中绑定到对应的 DOM 元素上。

接下来,您需要在模板中的 el-input 组件上绑定 @input 事件,并指向一个处理函数。在这个处理函数中,您可以检查输入内容,并确保前五个字符与 res.data.companyCode 的前五个字符相同。

以下是一个示例代码,展示了如何实现这个功能:

<template>  <el-input    v-model="inputValue"    @input="handleInput"    :maxlength="maxLength"    placeholder="请输入内容"  ></el-input></template><script>export default {  data() {    return {      inputValue: '', // 用于绑定输入框的值      maxLength: 10, // 根据需要设置最大长度      fixedPrefix: '', // 用于存储固定的前缀    };  },  async created() {    const res = await getCompanyInfo();    this.fixedPrefix = res.data.companyCode.slice(0, 5); // 获取前五个字符作为固定前缀    this.inputValue = this.fixedPrefix; // 初始化输入框的值  },  methods: {    handleInput(value) {      // 确保前五个字符与固定前缀相同      if (value.slice(0, 5) !== this.fixedPrefix) {        value = this.fixedPrefix + value.slice(5);      }      // 更新输入框的值      this.inputValue = value;    },  },};</script>

在这个示例中,inputValue 用于双向绑定输入框的值。handleInput 方法会在每次输入时被调用,并检查输入内容。如果前五个字符与 fixedPrefix 不同,则将它们替换为 fixedPrefix。这样,用户就不能删除前五个字符了。您可以根据需要调整 maxLength 来限制输入框的最大长度。

 类似资料:
  • import { Input } from 'feui'; components: { [Input.name]: Input } 代码演示 基础用法 <fe-group> <fe-input title='value' v-model="value" placeholder="我是占位符"></fe-input> </fe-group> 不可用状态 <fe-group

  • 输入框组件。 Usage 全部引入 import { Input } from 'beeshell'; 按需引入 import { Input } from 'beeshell/dist/components/Input'; Examples iOS 平台 Android 平台支持清空功能 Code 详细 Code import { Input } from 'beeshell'; <Inp

  • Input 输入框 通过鼠标或键盘输入字符 warning Input 为受控组件,它总会显示 Vue 绑定值。 通常情况下,应当处理 input 事件,并更新组件的绑定值(或使用v-model)。否则,输入框内显示的值将不会改变。 不支持 v-model 修饰符。 基础用法 demo <el-input v-model="input" placeholder="请输入内容"></el-input

  • radio-group 单项选择器,内部由多个<radio/>组成。 bindchange 类型:EventHandle 默认值:无 说明:<radio-group/> 中的选中项发生变化时触发 change 事件,event.mp.detail = {value: 选中项radio的value} radio 单选项目 在mpvue框架中使用 <template> <div class="pa

  • Input 输入框 1.3.0 平台差异说明 App H5 微信小程序 支付宝小程序 百度小程序 头条小程序 QQ小程序 √ √ √ √ √ √ √ 基本使用 通过v-model绑定输入框的值 通过type设置输入框的类型 通过border配置是否显示输入框的边框 <template> <u-input v-model="value" :type="type" :border="border"

  • 通过鼠标或键盘输入字符 warning Input 为受控组件,它总会显示 Vue 绑定值。 通常情况下,应当处理 input 事件,并更新组件的绑定值(或使用v-model)。否则,输入框内显示的值将不会改变。 不支持 v-model 修饰符。 基础用法 demo <el-input v-model="input" placeholder="请输入内容"></el-input> <script