input输入框的一些复习

news2025/1/18 16:50:51

在这里插入图片描述
在这里插入图片描述

<template>
  <div>
    <div style="text-align: center;margin: 10px 0;">
      <span style="font-size: 15px;font-weight: bold;">input输入框的基本应用</span>
    </div>
    <el-descriptions :column="3" size="default" border>
      <el-descriptions-item label="部门" label-align="center" :span="1">
        <el-select v-model="formData_Value.name" placeholder="请选择姓名" filterable size="small">
          <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
        </el-select>
      </el-descriptions-item>
  
      <el-descriptions-item label="直接上级" label-align="center" :span="2">
        <el-input v-model="formData_Value.name" disabled size="small" />
      </el-descriptions-item>


      <el-descriptions-item label-align="center" :span="3">
        <template #label>
          <div>
            <h2>劳动合同</h2>
            <h2>签订情况</h2>
          </div>
        </template>
        劳动合同签订情况aaaaa
      </el-descriptions-item>
      <el-descriptions-item label="续签期限" label-align="center" :span="3">
        <div style="height: 50px;">
          <el-radio-group v-model="ContractTime" @change="onChange_ContractTime">
            <el-radio :label="true" size="small">有固定期限</el-radio>
            <el-radio :label="false" size="small">无固定期限</el-radio>
          </el-radio-group>
          <div v-if="ContractTime" style="display: flex;" class="animate__animated animate__backInDown">
            <div>续签时长</div>
            <div contenteditable :class="{ StyleInput: inputStyle }"
              :style="{ borderBottom: inputStyle ? '1px solid #ff0000' : '1px solid #000' }"
              style="width: 80px;text-align: center;" @blur="handleBlur" @focus="changeText">
              {{ formData_Value.ContractTime }}
            </div>
            <div></div>
            <div>
              <div>续签时长</div>
              <input type="number" class="StyleInput" v-model="formData_Value.ContractTime" @change="handleChange" />
              <div></div>
            </div>
          </div>
        </div>
      </el-descriptions-item>
      <el-descriptions-item label="备注" label-align="center" :span="3">
        <el-input v-model="formData_Value.remark" :autosize="{ minRows: 2, maxRows: 4 }" type="textarea"
          placeholder="请输入备注" show-word-limit maxlength="500" />
      </el-descriptions-item>
      <el-descriptions-item label="申请人" label-align="center" :span="3">
        {{ formData_Value.fillname }}
      </el-descriptions-item>
    </el-descriptions>
    <div style="margin-top: 15px;display: flex;width: 100%;justify-content: center;">
      <div style="padding: 6px 8px;background-color:#36d;color:#fff;width: 150px;text-align: center; cursor: pointer;"
        @click="onClick_ok">&nbsp;&nbsp;&nbsp;</div>
    </div>
  </div>
</template>

<script setup>
import { ref, onMounted, nextTick } from "vue";
import { useRouter, useRoute } from "vue-router";
import { useStore } from "vuex";
import {
  ElMessage,
} from "element-plus";
const router = useRouter();
const route = useRoute();
const store = useStore();
let queryParams = ref({
  Cookie_USER: null,
  item: null
})
let props = defineProps({
  tableItem: {
    type: Object,
    default: {},
  },
})
const ContractTime = ref(true)
const formData_Value = ref({
  meancode: '',//合同编号  HTXQ + 年月日时分秒 + 2位随机数
  badge: '',//工号
  name: '',//姓名
  age: '',//年龄
  deptname: '',//部门
  supplier: '',//岗位
  lead: '',//直接领导
  ContractTime: 1,//需求期限  无固定期限,写600
  checksate: 0,//进程状态
  remark: '',//备注 500字
  fillname: '',//申请人
  filltime: '',//申请时间
})
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  }
]
const onChange_ContractTime = (val) => {
  if (val) {
    formData_Value.value.ContractTime = 1
  } else {
    formData_Value.value.ContractTime = 600
  }
}
const inputStyle = ref(false)
const handleBlur = (event) => {
  inputStyle.value = false
  formData_Value.value.ContractTime = event.target.innerText ? event.target.innerText : 1
}
const changeText = (value) => {
  console.log('输入的内容', value)
  inputStyle.value = true
}
const handleChange = (event) => {
  console.log('这个触发了', event.target.value)
  console.log('这个触发了', event.target)

  if (event.target.value > 0) {
    formData_Value.value.ContractTime = event.target.value
  } else {
    formData_Value.value.ContractTime = 1
  }
}
const onClick_ok = () => {
  let obj = {
    meancode: formData_Value.value.meancode,//合同编号  HTXQ + 年月日时分秒 + 2位随机数
    badge: formData_Value.value.badge,//工号
    name: formData_Value.value.name,//姓名
    age: formData_Value.value.age,//年龄
    deptname: formData_Value.value.deptname,//部门
    supplier: formData_Value.value.supplier,//岗位
    lead: formData_Value.value.lead,//直接领导
    ContractTime: Number(formData_Value.value.ContractTime),//需求期限  无固定期限,写600
    checksate: 0,//进程状态
    remark: formData_Value.value.remark,//备注 500字
    fillname: formData_Value.value.fillname,//申请人
    filltime: formData_Value.value.filltime,//申请时间
  }

  if (
    [
      {
        field: "deptname",
        message: "请选择部门",
      },
      {
        field: "name",
        message: "请选择姓名",
      },
      {
        field: "ContractTime",
        message: "请输入续签时长",
      }
    ].every((item) => validateFields(item, obj))
  ) {
    if (obj.ContractTime > 0) {
      console.log('需要提交的', obj)

    } else {
      ElMessage({
        message: "续签时间必须大于0",
        type: "error",
      });
    }
  }
}
onMounted(() => {
  store.dispatch("examine/COOLIE_VALUE_USER");
  queryParams.value.Cookie_USER = store.state.examine.cookieUser;

  if (queryParams.value.Cookie_USER.id) {
    ContractTime.value = true
    queryParams.value.item = props.tableItem;
    formData_Value.value.meancode = 66;
    formData_Value.value.fillname = queryParams.value.Cookie_USER.realname;
    formData_Value.value.ContractTime = 1
  } else {
    ElMessage({
      message: '账号信息为空,请重新登录',
      type: 'warning',
    })
  }
})

const validateFields = ({ field, message }, obj) => {
  const value = obj[field];
  if (value === null || value === undefined || value === "") {
    ElMessage({
      showClose: true,
      message: message,
      type: "error",
    });
    return false;
  }
  const trimmedValue = String(value).trim();
  if (!trimmedValue) {
    ElMessage({
      showClose: true,
      message: message,
      type: "error",
    });
    return false;
  }
  return true;
};
</script>
<style scoped></style>
<style scoped lang="less">
.StyleInput {
  color: #ff0000;
  border: none;
  outline: none;
  border-bottom: 1px solid red;
  box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.1);
  transition: border-bottom-color 0.3s ease;
}
</style>
HTML中,input元素有多个原生事件可供使用,这些事件可以通过JavaScript来监听和处理。以下是一些常用的input元素的原生事件:

change: 当输入框的值发生改变并失去焦点时触发,适用于大多数输入框。

input: 当输入框的值发生改变时触发,即时响应用户输入,比如按键或者粘贴内容。

focus: 当输入框获得焦点时触发。

blur: 当输入框失去焦点时触发。

keydown: 当用户按下键盘上的任意键时触发,通常用于捕获特定的键盘操作。

keyup: 当用户释放键盘上的任意键时触发,通常用于获取输入框的实时值。

keypress: 当用户按下键盘上的字符键时触发,用于捕获字符输入。

select: 当用户选择输入框中的文本时触发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1719914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang dlv远程debug

1. 前期准备 1.1. dlv安装 1.1.1. go install安装 go install github.com/go-delve/delve/cmd/dlvlatest1.1.2. 手动安装 下载 linuxx86 架构 二进制文件 &#x1f4ce;dlv.linux.x86.zip zip文件&#xff0c;下载后&#xff08; 如果没权限&#xff0c;记得 执行chmod ax…

linux下使用cmake-gui编译WXQT

一.编译环境 操作系统&#xff1a;Ubuntu 22.04.3 LTS wxWidgets源码&#xff1a;wxWidgets-3.1.5 编译工具&#xff1a;CMake-gui qt版本&#xff1a;5.13.2 二.编译步骤 1.将源码解压。 2.打开CMake-gui&#xff0c;并设置好源码目录和构建目录 3.点击configure 会弹出…

【c++入门】this指针

this指针引出&#xff1a; 我们知道一个类可以有多个实例化对象&#xff0c;但是这多个实例化对象所调用的成员函数是在公共代码区&#xff1b; 我们先来定义一个Date类&#xff1a; class Date { public:void init(int year, int month, int day){_year year;_month month;…

excel怎么对非数字求和汇总?

如&#xff1a;学生小王的成绩为&#xff1a;A&#xff0c;A&#xff0c;A&#xff0c;A&#xff0c;B&#xff0c;B-……想得到的成绩汇总求和为&#xff1a;2A,2A,1B,1B- 如果在低版本里&#xff0c;用公式计算可能相当复杂&#xff0c;但是有了TEXTJOIN函数和UNIQUE函数&…

一、实现一个简单的 Google Chrome 扩展程序

目录 &#x1f9ed; 效果展示 # 图示效果 a. 拓展程序列表图示效果&#xff1a; b. 当前选项卡页面右键效果&#xff1a; c. 拓展程序消息提示效果&#xff1a; &#x1f4c7; 项目目录结构 # 说明 # 结构 # 文件一览 ✍ 核心代码 # manifest.json # background.j…

数据结构算法 数组的实现与练习(C语言实现,Java实现)

文章目录 数据结构数组(顺序表)特点使用Java实现更高级的数组C语言实现总结优点缺点 例题[26. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/)[1. 两数之和](https://leetcode.cn/problems/two-sum/)[27. 移除元素](https://lee…

阿里云部署nodejs

目录 1、安装node.js 1-1 进入opt/software 1-2 下载node.js安装包 1-3 解压 2 配置环境变量 2-1 vim中配置环境变量 2-2 命令行中保存环境变量 2-3 检查安装版本 2-3 更换镜像 3、上传node.js项目 1-1 启动项目 1-2 配置对应的安全组 ​编辑 4、pm2启动多个node项…

Scroll 上的明星项目Pencils Protocol ,缘何被严重低估?

近日&#xff0c;完成品牌升级的 Pencils Prtocol 结束了 Season 2 并无缝开启了 Season 3&#xff0c;在 Season 3 中&#xff0c;用户可以通过质押系列资产包括 $ETH、$USDT、$USDC、$STONE 、$wrsETH、$pufETH 等来获得可观收益&#xff0c;并获得包括 Scroll Marks、 Penci…

二叉树的前序遍历(oj题)

一、题目链接&#xff1a; https://leetcode-cn.com/problems/binary-tree-preorder-traversal/ 二、题目思路 先调用二叉树节点计算函数&#xff0c;得到二叉树的总结点数。然后申请该大小的数组空间。 再使用前序遍历&#xff0c;依次访问每个结点的数据&#xff0c;依次存…

01-1.2.3 算法的空间复杂度

什么是空间复杂度&#xff1f; 代码在运行之前需要先装入内存&#xff0c;程序代码需要占一定的位置&#xff08;在这边假设是100B&#xff09; 定义的变量和参数i&#xff0c;n都需要占用内存空间 //算法一——逐步递增型 void loveYou(int n) { //n为问题规模int i 1; /…

Notepad++ 常用

File Edit search view Encoding Language Settings Tools Macro Run Plugins Window 文件 编辑 搜索 视图 编码 语言 设置 工具 宏 运行 插件 窗口 快捷方式 定位行 &#xff1a;CTRL g查找&#xff1a; CTRL F替换&am…

未来已来, AI将作为超级工具?

人工智能时代已来 1.AI将作为超级工具&#xff1a;AI是推动全产业数字化转型的高效工具&#xff0c;机遇比互联网时代大10倍&#xff0c;但只有1/3的机会留给初创企业。 2.硅谷AI市场分类中&#xff0c;特别看好开源平台&#xff0c;其将为初创企业和大企业提供更多选择。 3.…

LabVIEW调用外部DLL(动态链接库)

LabVIEW调用外部DLL&#xff08;动态链接库&#xff09; LabVIEW调用外部DLL&#xff08;动态链接库&#xff09;可以扩展其功能&#xff0c;使用外部库实现复杂计算、硬件控制等任务。通过调用节点&#xff08;Call Library Function Node&#xff09;配置DLL路径、函数名称和…

chatMed开发日志博客(持续更新中)

目录 1. 项目概述 2. 开发人员团队 3. 大致需求 4. 开发内容 4.1. 前端开发 4.1.1: 前端页面开发 4.1.2: 登录机制以及路由守卫的开发 4.1.3: 文件上传机制和保存机制 4.1.4: 消息传递机制 4.2. 线程池开发 4.3. 在线调试 1. 项目概述 搭建一个基于深度学习的分析平台…

Scrapy vs. Beautiful Soup | 网络抓取教程 2024

网络爬虫是任何想要从网上收集数据用于分析、研究或商业智能的人必备的技能。Python中两个最受欢迎的网络爬虫工具是Scrapy和Beautiful Soup。在本教程中&#xff0c;我们将比较这些工具&#xff0c;探索它们的功能&#xff0c;并指导你如何有效地使用它们。此外&#xff0c;我…

国产FPGA核心板!米尔紫光同创Logos-2和Xilinx Artix-7核心板

随着嵌入式的快速发展&#xff0c;在工控、通信、5G通信领域&#xff0c;FPGA以其超灵活的可编程能力&#xff0c;被越来越多的工程师选择。近日&#xff0c;米尔电子发布2款FPGA的核心板和开发板&#xff0c;型号分别为&#xff1a;基于紫光同创Logos-2系列PG2L100H的MYC-J2L1…

Linux基础指令及其作用之系统信息和管理

系统信息和管理 ps ps 命令用于显示当前系统的进程信息。它是 Unix 和类 Unix 操作系统中的一个重要工具&#xff0c;可以用于监控和管理系统进程。以下是 ps 命令的详细用法和常见选项&#xff1a; ps [选项]常用选项![在这里插入图片描述](https://img-blog.csdnimg.cn/di…

从摇一摇到弹窗,AD无处不在?为了不再受打扰,推荐几款好用的屏蔽软件,让手机电脑更清爽

当我们沉浸在智能手机带来的便捷与乐趣中时&#xff0c;内置AD如同不速之客&#xff0c;时常打断我们的体验。 尤其是手机上那些“摇一摇”跳转&#xff0c;稍有不慎就会跳转到其他应用&#xff0c;令人不胜其烦。同样&#xff0c;电脑上的内置AD也如影随形&#xff0c;影响了我…

深度学习模型的C++部署:ONNXRUNTIME引领跨平台革命

一、引言 在AI技术的浪潮中&#xff0c;深度学习模型的部署已成为工程师们的核心技能。随着AI技术的不断进步&#xff0c;对于能够高效部署模型的人才需求日益增长。C因其在性能和系统级控制方面的优势&#xff0c;正逐渐成为深度学习模型部署的行业新宠。 二、C&#xff1a;…

【介绍下运维,什么是运维?】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…