iview input实现默认获取焦点并选中文字

Posted xhappyness

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iview input实现默认获取焦点并选中文字相关的知识,希望对你有一定的参考价值。

1. 业务背景

配置页面,可新建和复制任务;当复制任务的时候,要把名字的input框默认获取焦点,并全选任务名。效果如下:
技术图片

2. 代码实现

<template>
    <Form :model="config">
      <FormItem label="任务名称">
        <Input
          ref="taskNameInput"
          id="taskNameInput"
          placeholder="请输入任务名称"
          v-model.trim="config.taskName"
        />
      </FormItem>
      ···
    </Form>
</template>

<script>
export default {
  name: "Config",
  computed: {
    taskName() {
      return this.$route.query.taskName;
    }
  },
  data() {
    return {
      config: {
        taskName: "",
        ···
      }
    };
  },
  methods: {
    async getTaskConfig() {
      // 接口获取数据
    },
    setNameFocus() {
      this.$refs.taskNameInput.focus();
      document.querySelector("#taskNameInput .ivu-input").select();
    }
  },
  async mounted() {
    if (this.taskName) {
      await this.getTaskConfig();
      this.setNameFocus();
    }
  }
};
</script>

说明: 因为iview的Input并没有提供选中的方法,所以这时候只能使用原生的select()方法进行选中;调用该方法的dom是原生的input,而不是iview的i-input

以上是关于iview input实现默认获取焦点并选中文字的主要内容,如果未能解决你的问题,请参考以下文章

axure7.0如何实现光标在文本框中获得焦点时,文本框内容自动清空。失去焦点时显示默认文字,谢谢!

如何让输入框默认获得焦点

用jquery怎么实现点击密码输入框,上面的提示文字“请输入密码”消失,失去焦点时候提示文字又存在

iview render input每输入一个字符就会自动跳出焦点

去掉谷歌浏览器获取焦点时默认的inputtextarea的边框和背景

jQuery实现当文字过多时,完成输入后(失去焦点),显示输入的前面的文字,隐藏后面的文字