首页 > 其他分享 >TDesign——Input指定光标插入内容

TDesign——Input指定光标插入内容

时间:2023-06-13 17:57:29浏览次数:53  
标签:TDesign const title -- value var Input td 光标

前言

setRangeText: setRangeText

在线预览:wordPackage

内容

一个很简单的Demo,细节没做处理

<template>
  <t-form>
    <!-- 标题 -->
    <t-card
      :title="
        '标题(' +
        formData.dynamic_creative_elements.title_options.length +
        '/10)'
      "
      header-bordered
      :style="{ width: '800px', margin: '20px 0 0 20px' }"
    >
      <t-form-item
        v-for="(titles, index) in formData.dynamic_creative_elements
          .title_options"
        :key="index"
        label="标题(1-30字)"
        name="title_options"
      >
        <t-input
          :id="'title_' + index"
          v-model="titles.title"
          placeholder="请输入标题"
          :maxlength="30"
          show-limit-number
        >
        </t-input>
        <t-dropdown
          :options="wordPackageOptions"
          :min-column-width="100"
          @click="handleWordsPackage($event, 1, index)"
        >
          <span>
            <t-button variant="text">
              <template #icon><wallet-icon /></template>
              插入词包
            </t-button>
          </span>
        </t-dropdown>
        <span
          v-if="formData.dynamic_creative_elements.title_options.length > 1"
          @click="handleRemoveElement(1, index)"
        >
          <t-button shape="square">
            <template #icon><remove-icon size="2em" /></template>
          </t-button>
        </span>
      </t-form-item>
      <div>
        <t-button
          block
          :disabled="
            formData.dynamic_creative_elements.title_options.length === 10
          "
          @click="handleAddElement(1)"
        >
          还可以添加{{
            10 - formData.dynamic_creative_elements.title_options.length
          }}个
        </t-button>
      </div>
    </t-card>
  </t-form>
</template>

<script setup lang="ts">
import { RemoveIcon, WalletIcon } from 'tdesign-icons-vue-next';
import { ref } from 'vue';

const formData = ref({
  dynamic_creative_elements: {
    title_options: [{ title: '' }],
    description_options: [{ description: '' }],
  },
});

const wordPackageOptions = [
  { content: '城市', value: 1, extends: '{{city}}' },
  { content: '日期', value: 2, extends: '{{day}}' },
  { content: '星期', value: 3, extends: '{{week}}' },
  // { content: '关键词', value: 4 },
];

// 处理标题元素的移除
const handleRemoveElement = (option: number, index: number) => {
  formData.value.dynamic_creative_elements.title_options.splice(index, 1);
};

// 处理标题元素添加
const handleAddElement = (option: number) => {
  formData.value.dynamic_creative_elements.title_options.push({
    title: '',
  });
};

// 处理词包插入 | NOTE 这里不考虑IE浏览器
const handleWordsPackage = (val: any, type: number, index: number) => {
  const id = `#${['title_', 'desc_'][type - 1]}${index} input`;
  const input = document.querySelector(id) as HTMLInputElement;
  input.setRangeText(val.extends);
  formData.value.dynamic_creative_elements.title_options[index].title =
    input.value;
};
</script>

<style lang="less" scoped>
:deep(.t-tab-panel) {
  margin-left: var(--td-comp-margin-xxxl);
}
.promote-label {
  margin-right: var(--td-comp-margin-xxl);
}

:deep(.t-input) {
  border: transparent;
  border-bottom: 1px solid var(--td-border-level-2-color) !important;
}

:deep(.t-card__title) {
  margin-right: var(--td-comp-margin-xs);
}

:deep(.t-icon) {
  vertical-align: sub;
}

:deep(.t-button--variant-text) {
  border-bottom: 1px solid var(--td-border-level-2-color);
  color: var(--td-text-color-secondary);
}

.sub-text {
  margin-top: 5px;
  font: var(--td-font-body-small);
  color: var(--td-text-color-placeholder);
}

:deep(.t-collapse-panel__icon--left) {
  position: relative;
  top: -26px;
}
</style>

标签:TDesign,const,title,--,value,var,Input,td,光标
From: https://www.cnblogs.com/wangyang0210/p/17478349.html

相关文章

  • 常见问题——fileinput.js上传文件,不显示文件名的中文
    问题:使用fineinput.js插件上传文件,只显示文件名称中的英文、数字、符号不显示文件名称中的汉字解决方案简单粗暴:修改fileinput.js中的slugDefault方法slugDefault:function(text){returnisEmpty(text)?'':text.split(/(\\|\/)/g).pop().replace(/[^\w\-.\\\/]+......
  • springcloud 启动失败 YAMLException java.nio.charset.MalformedInputException Inp
     上面这个是错误信息,但是该微服务在本地启动的时候是可以的,但是本地打成jar包本地执行的时候就失败。需要再Java-jar的中间加一下字符编码java-Dfile.encoding=utf-8-jar  myself.jar   myself.jar是自己的jar包问题解决......
  • [GPT] 监测输入框被 js 设置了值 ?input 输入框被设置了 value 值,但是没有触发 change
    1.input输入框被设置了value值,但是没有触发change事件?如果输入框的value值是通过JavaScript代码直接设置的,那么不会触发change事件,这是正常的行为。change事件只会在用户手动更改输入框的值并使其失去焦点时触发。如果输入框的value值是通过用户交互(如键盘输入......
  • input输入框失去焦点时获取光标位置并插入内容
     <el-input@blur="blur":rows="5"v-model="messageForm.content"type="textarea"maxlength="100"show-word-limitplaceholder="请输入你的留言"></el-input> data(){return{......
  • ubuntu 手动安装Nvidia后黑屏左上角光标显示
    此解决方法适合Intel带核显CPU,也就是双CPU(Intel核显+Nvidia独显).解决办法是用Intel核显驱动,Nvidia只用来做计算,不适合用GPU专门做图形渲染目的.主要是因为Nvidia修改了Xorg窗口系统配置文件/etc/X11/xorg.conf,从安装Nvidia驱动前的Intel核显驱动改成了用Nvidia驱动。主要......
  • pycharm/pyqt5/QTdesigner/PyUIC路径设置
    前言:pycharm安装遇到很多问题,1.5天。网上找到的解决方法每个都一点点去尝试,但不是很多方案也不是适用于我。只能把适用于我的方法和我的理解汇总如下。0、离线安装因为公司网络很慢所以只能离线安装,安装下载地址网上可找,不重复了。(一句话看起来很简单,想起当初为了寻找安装源......
  • Cadence Allegro如何设置十字大光标?
       ......
  • select 多选回显的时候input高度问题
    select多选回显的时候input高度没撑开内容超出setTimeout(function(){if(document.querySelector('.el-cascader__tags')){document.querySelector('#el-cascader.el-input__inner').style.setProperty('height',`${document......
  • 微信小程序输入框光标错乱问题
     会出现这个问题,一般是受到了滚动条的影响,所以,在获取焦点时,需要关闭页面滚动,失去焦点时,就开启滚动,例如页面里存在scroll-view组件示例代码wxml片段<scroll-viewclass="m_scroll"style="height:100vh;"scroll-y="{{aFocus}}"scroll-with-animation></scroll-view><in......
  • 关于input( )和sys.stdin.readline( )的区别
    sys.stdin.readline()会将标准输入全部获取,包括末尾的'\n',input()会把‘\n’忽略sys.stdin.readline().strip() 去掉末尾的换行符, importsysa=sys.stdin.readline().strip()b=input()print(a,type(a))print(b,type(b))#678<class'str'>#678<clas......