javascript - 从输入中解开文本字段的图标单击启用

标签 javascript vue.js vuejs2 vuetify.js

我想实现一个可以在需要时由用户解锁的输入字段。

从视觉上看,我认为按钮应该在字段外或字段内,但要与其紧密链接。

为此,我一直在使用 Vuetify Text Field's append-outer-icon Prop :

模板:

<v-text-field
  v-model="message"
  :append-outer-icon="icon"
  @click:append-outer="locked = !locked"
  :disabled="locked"
></v-text-field>

这是脚本:

data: () => ({
  message: '',
  locked: true,
}),
computed: {
  icon () {
    return this.locked ? 'lock' : 'lock_open'
  }
},

这是 Codepen 的链接:https://codepen.io/anon/pen/jQaJPK

但是,当输入被禁用时,按钮无法被点击。

有什么方法可以在输入未使用此方法时启用按钮,还是我必须将按钮和输入分开?

最佳答案

您可以覆盖阻止图标点击事件的 CSS:

.v-input--is-disabled:not(.v-input--is-readonly) .v-icon.v-icon--disabled {
  pointer-events: auto;
} 

或者对于额外的自定义,您可以将图标放在 append-outer 插槽中(对于“内部”HTML 也有 append 插槽),添加自定义图标类并覆盖防止点击的 CSS。

<v-text-field
  v-model="message"
  :disabled="locked"
>
  <v-icon 
      slot="append-outer" 
      @click="locked = !locked"
      class="lock-button"
  >
    {{ icon }}
  </v-icon>
</v-text-field>

那么您也可以在 v-icon 上添加 color="black" ,这样它看起来就不会被禁用。

CSS:

.lock-button {
  pointer-events: auto;
}

Codepen

关于javascript - 从输入中解开文本字段的图标单击启用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53391733/

相关文章:

javascript - 如何使用 Javascript 在桌面上创建新文件夹?

vue.js - Vue 的 img 标签上的 @error 是否监听 onerror 事件?

javascript - 使用 Vue.js 在 <svg> 元素中渲染 svg 内容

javascript - 监听特定子 vuejs 2 发出的事件

javascript - d3 : repeat transition for series of elements?

Javascript列表对象无法添加JSON? Node.JS、Firebase

javascript - 单个组件中的多个 redux 存储

javascript - 如何使用 Vue.js 在表格单元格上绑定(bind)工具提示

javascript - Vuejs 预加载插件失败,HtmlWebpackPlugin.getHooks 不是函数

javascript - 从 vue1 迁移到 vue2