记录目前碰到的闲杂小小小功能

1. JS 点击按钮复制内容  \n 可设置让内容换行

//复制按钮
const copyName = () => {
  let data: string[] = [];
  if (nameList.value.length >= 1) {
    data = nameList.value;
    // 使用 Clipboard API 将数据复制到粘贴板

    // 将获取到的数据存储在变量中
    const clipboardData = data;
    navigator.clipboard
      .writeText(clipboardData.join("\n"))
      .then(() => {
        ElMessage.success("复制成功");
      })
      .catch((error) => {
        ElMessage.error("复制失败");
      }); // 假设后端返回的是文本数据
  }
};

2.   页面顶部留位置给字体滚动   <marquee></marquee>标签

<marquee direction="left">这是从右向左滚动的文字。</marquee>
//direction='left' 是用来设置滚动方向

3.  表单绑定有数组数据,使用表单验证的方式 (使用到的场景是 =>  点击按钮添加多个相同表单内容的项,并且都要做验证)

// template 代码

 <el-form
      v-if="type === 0"
      ref="formRef"
      :model="form"   //绑定表单对象(一定要写)
      :inline="true"
      class="demo-form-inline"
      :rules="rules"  //绑定规则(一定要写)
    >
      <div v-for="(item, index) in form.list" :key="index">  //循环对象里的list数组
        <el-form-item
          label="用户名称"
          :prop="`list[${index}].username`"  //prop绑定不对就不会触发验证,格式一定要这样写
          :rules="rules.username"  //rules 需要绑定   以下同理↓↓↓↓↓↓↓
        >
          <el-input v-model="item.username" placeholder="请输入名称" />
        </el-form-item>
        <el-form-item
          label="手机号码"
          :prop="`list[${index}].phone`"  
          :rules="rules.phone"   
        >
          <el-input v-model="item.phone" placeholder="请输入手机号码" />
        </el-form-item>
        <el-form-item
          label="角色选择"
          :prop="`list[${index}].role`" 
          :rules="rules.role"  
        >
          <el-select
            v-model="item.role"
            placeholder="请选择角色" 
          >
            <el-option
              v-for="option in options"
              :key="option.value"
              :label="option.label"
              :value="option.value"
            />
          </el-select>
        </el-form-item>
      </div>
    </el-form>


//javascript   代码 

const formRef = ref(); //定义表单的ref,调用formRef.value.validate((valid,field)=>{...})

//form表单对象中有数组数据list

const form = reactive({
  list: [
    {
      username: "",
      role: "",
      phone: "",
    },
  ],
});

//自定义表单验证 (我这里的逻辑是,不能输入重复的名称)
const validateName = (rule: any, value: any, callback: any) => {
  const bol = (props.initList as string[]).every((item) => {
    return item !== value;
  });
  // bol=true说明验证通过,没有重复,false:有重复了
  bol ? callback() : callback(new Error("用户名称重复:" + value));
};

//定义表单规则

const rules = {
  username: [
    { required: true, message: "请输入名称", trigger: "blur" },
    { min: 3, max: 16, message: "请输入3-16位字符", trigger: "blur" },
    { validator: validateName, trigger: "blur" },
  ],
  phone: [
    { required: true, message: "请输入手机号", trigger: "blur" },
    {
      pattern: /^1[3-9]\d{9}$/,
      message: "请正确输入手机号",
      trigger: "blur",
    },
  ],
  role: [{ required: true, message: "请选择角色", trigger: "blur" }],
};

4.  在<el-form>组件中,首次点击按钮或者input框回车键,都会触发页面首次刷新,再次点击才能正常显示接口返回的数据
出现这个的问题原因是按钮或者input回车会触发表单的默认提交 submit,解决办法就是在

<el-form  @submit.prevent>   阻止其的默认行为

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值