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

vue.js - Element UI el-input:如何在focus时将placeholder值设为双向绑定?

常茂
2024-11-18

elementui前端怎么实现el-input标签的placeholder绑定当前的数据值的同时,当focus事件触发的时候将placeholder的值转为双向绑定的?v-model直接绑定的话placeholder就会失效,我希望实现某些网站的点击之后就自动将placeholder的值输入的那种效果,后续还能拿到这个值进行操作。

共有2个答案

景志
2024-11-18

自定义指令:

<template>
  <el-input
    v-model="inputValue"
    v-auto-placeholder="placeholderText">
  </el-input>
</template>

<script>
export default {
  data() {
    return {
      inputValue: '',
      placeholderText: '请输入内容'
    }
  },
  directives: {
    autoPlaceholder: {
      mounted(el, binding) {
        const input = el.querySelector('input')
        input.placeholder = binding.value
        
        input.addEventListener('focus', () => {
          if (!input.value) {
            input.value = binding.value
            input.dispatchEvent(new Event('input'))
          }
        })
      }
    }
  }
}
</script>
牧业
2024-11-18

在 Vue.js 中实现点击输入框保存输入值作为 placeholder。

实现步骤

  1. 定义数据属性:存储当前的 placeholder 值和输入框的值。
  2. 绑定 placeholder:使用 v-bind 指令将 placeholder 绑定到数据属性上。
  3. 监听 focus 事件:在输入框获得焦点时,将 placeholder 的值更新为输入框的值。

示例代码

模板部分 (.vue 文件)

<template>
  <div>
    <el-input
      v-model="inputValue"
      :placeholder="placeholder"
      @focus="handleFocus"
      @blur="handleBlur"
    ></el-input>
  </div>
</template>

脚本部分

<script>
export default {
  data() {
    return {
      inputValue: '',
      placeholder: '请输入内容',
    };
  },
  methods: {
    handleFocus() {
      this.placeholder = this.inputValue;
    },
    handleBlur() {
      this.placeholder = '请输入内容';
    },
  },
};
</script>

解释

  1. 定义数据属性

    • inputValue:用于存储输入框的值。
    • placeholder:用于存储 placeholder 的初始值。
  2. 绑定 placeholder

    • 使用 v-bind:placeholder="placeholder" 将 placeholder 绑定到数据属性 placeholder 上。
  3. 监听 focus 和 blur 事件

    • handleFocus 方法:在输入框获得焦点时触发,将 placeholder 更新为输入框的当前值。
    • handleBlur 方法:在输入框失去焦点时触发,将 placeholder 恢复为初始值。
 类似资料:
  • react中的双向绑定和vue中双向绑定是一回事吗? react中的双向绑定我只在表单上看到。 vue中的双向绑定(v-model)我感觉它是同步父子组件上的两个可响应数据(这么做的原因应该是希望在子组件上改变时,父组件也跟着改变。)。

  • Mpx针对表单组件提供了wx:model双向绑定指令,类似于v-model,该指令是一个语法糖指令,监听了组件抛出的输入事件并对绑定的数据进行更新,默认情况下会监听表单组件的input事件,并将event.detail.value中的数据更新到组件的value属性上。 简单实用示例如下: <view> <input type="text" wx:model="{{message}}"> <

  • 双向绑定这个概念在angular出现的时候,就作为王牌概念. 现在几乎是个js前端框架,就有这个功能. 它的概念是: 某个变量, 如果展现在页面上的话: 如果在代码层面进行修改, 那么页面的值就会发生变化 如果在页面进行修改(例如在input标签中), 那么代码的值就会发生变化. 一个演示例子. 在我们的项目中,增加一个 vue页面: src/components/TwoWayBinding.vu

  • 单向绑定非常简单,就是把Model绑定到View,当我们用JavaScript代码更新Model时,View就会自动更新。 有单向绑定,就有双向绑定。如果用户更新了View,Model的数据也自动被更新了,这种情况就是双向绑定。 什么情况下用户可以更新View呢?填写表单就是一个最直接的例子。当用户填写表单时,View的状态就被更新了,如果此时MVVM框架可以自动更新Model的状态,那就相当于我

  • 在这一步你会增加一个让用户控制手机列表显示顺序的特性。动态排序可以这样实现,添加一个新的模型属性,把它和迭代器集成起来,然后让数据绑定完成剩下的事情。 请重置工作目录: git checkout -f step-4 你应该发现除了搜索框之外,你的应用多了一个下来菜单,它可以允许控制电话排列的顺序。 步骤3和步骤4之间最重要的不同在下面列出。你可以在GitHub里看到完整的差别。 模板 app/in

  • 使用 v-model 指令,可以建立数据到模板的双向绑定。本质上它是如下写法的语法糖: <input v-model="value" /> => <input value={{ self.value }} ev-input={function(e) { self.value = e.target.value; this.update(); }.bind(this)} /

  • 问题内容: 我试图在控制器的initialize()方法中将TextArea的textProperty绑定到StringProperty。 值更改时,侦听器会监听这两个对象,以执行某些行为。 但是有些奇怪的事情发生了。 我建立了一个简单的模型来重现这种情况。 Main.java sample.fxml 我认为以上代码与该问题无关。但以防万一,我把它放在这里。 这是控制器。 Controller.j