input输入框的一些复习

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

<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.mfbz.cn/a/666290.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

现如今AI大环境究竟怎样?

遇到难题不要怕&#xff01;厚德提问大佬答&#xff01; 厚德提问大佬答10 你是否对AI绘画感兴趣却无从下手&#xff1f;是否有很多疑问却苦于没有大佬解答带你飞&#xff1f;从此刻开始这些问题都将迎刃而解&#xff01;你感兴趣的话题&#xff0c;厚德云替你问&#xff0c;你…

VR导航的实现原理、技术优势和应用场景

VR导航通过虚拟现实技术提供沉浸式环境&#xff0c;结合室内定位技术实现精准导航。目前&#xff0c;VR导航已在多个领域展现出其独特的价值和潜力&#xff0c;预示着智能导航系统的未来发展。 一、实现原理 VR导航技术依托于虚拟现实(VR)和室内定位系统。VR技术利用计算机模…

鸿蒙ArkTS声明式开发:跨平台支持列表【透明度设置】 通用属性

透明度设置 设置组件的透明度。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版…

Python深度学习基于Tensorflow(13)目标检测实战

文章目录 RPN 整体代码RPN 具体实现过程数据标注读取标注数据固定图片大小调整目标框使用预训练模型获取 feature_shape定义 RPN 网络生成RPN 的 CLS 和 REG 数据集获取所有的锚点计算锚点与目标框的IOU 定义 RPN loss 和 训练过程 参考资料 这里实现的是二阶段目标检测&#x…

【UE5:CesiumForUnreal】——加载无高度地形数据

目录 1.实现目的 2.数据准备 2.1下载数据 2.2 数据切片 3.加载无地形数据 1.实现目的 在CesiumForUnreal插件中&#xff0c;我们加载地图和地形图层之后&#xff0c;默认都是加载的带有高程信息的地形数据&#xff0c;在实际的项目和开发中&#xff0c;有时候我们需要加载无…

双指针法 ( 快乐数 )

「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&#xff0c;那么这个数就是快乐数 编写一个算法来判断一个…

buuctf的RSA(五)

[RoarCTF2019]RSA 一看到题目&#xff0c;我就有些蒙了&#xff0c;A是代表了什么&#xff0c; 先来分解n 接下来可以暴力破解e了&#xff0c;因为e没有给出来&#xff0c;应该不会太大&#xff0c;猜测是四位数字 import gmpy2 import libnum from Crypto.Util.number import…

Spring Boot 项目中使用 JSP

文章目录 Spring Boot 项目中使用 JSP项目结构引入依赖包编写页面和后台运行方式一&#xff1a;Maven 命令运行方式二&#xff1a;在 IDEA 中运行方式三&#xff1a;打 war 包部署运行 Spring Boot 项目中使用 JSP 在 Spring Boot 项目中不是不可以使用 JSP 。想在 Spring Boo…

科普健康短视频:成都鼎茂宏升文化传媒公司

科普健康短视频&#xff1a;引领健康知识新潮流 在数字化时代的浪潮中&#xff0c;短视频以其短小精悍、直观易懂的特点&#xff0c;迅速成为大众获取信息的重要渠道。其中&#xff0c;科普健康短视频更是凭借其科学、权威、实用的内容&#xff0c;吸引了大量关注健康的观众。…

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 会弹出…

Jenkins常用插件与应用详解

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Jenkins是一个平台我们通过安装插件来解决我们想要完成的任务 1、Jenkins常用插件 Allure&#…

springboot+vue 社区养老服务系统

Springbootvue社区居家养老服务系统&#xff0c;数据库mysql&#xff0c;mybatis框架&#xff0c;有可视化页面。 功能&#xff1a; 用户管理 养老服务管理 护理人员管理 服务类型管理 健康状况管理 社区管理 服务区管理 娱乐资讯管理 咨询分类管理 反馈建议 系统简历管理 轮播…

Linux - 磁盘管理1

1.磁盘的分区 1.1 磁盘的类型&#xff08;标签&#xff09; MBR&#xff1a; ① 最大支持2T以内的硬盘 ② 有主分区p 拓展分区e 逻辑分区l之分 > 主分区编号1-4&#xff0c;主分区可以格式化使用 拓展分区编号1-4&#xff0c;拓展分区不能格式化 拓展分区最多能有1个&…

Vue2 + Element UI 封装 Table 递归多层级列表头动态

1、在 components 中创建 HeaderTable 文件夹&#xff0c;在创建 ColumnItem.vue 和 index.vue。 如下&#xff1a; 2、index.vue 代码内容&#xff0c;如下&#xff1a; <template><div><el-table:data"dataTableData"style"width: 100%"…

TXT文档拆分、合并、添加内容,修改内容、删除内容——首助编辑高手软件一招解决

下面这个TXT文档里面是一篇长篇小说&#xff0c;大家都知道一般小说文字内容是比较大的一个文件呢&#xff0c;想要拆分&#xff0c;拆分肯定是有方法呢&#xff0c;比如比较重统的方法手动一章一章复制出来&#xff0c;粘贴到另一个文档里面去粘贴&#xff0c;手动操作是不是很…

从人工向智能化转变,企业级指标管理平台建设实战

随着大数据技术和人工智能的发展&#xff0c;企业逐渐意识到构建一个集中化的指标管理平台的必要性。这样的平台旨在解决几个核心问题&#xff1a;首先&#xff0c;确保所有部门都能通过统一的入口提交指标需求&#xff0c;实现需求的透明化管理&#xff1b;其次&#xff0c;建…

计算机视觉与模式识别实验1-1 图像的直方图平衡

文章目录 &#x1f9e1;&#x1f9e1;实验流程&#x1f9e1;&#x1f9e1;1.读入图像‘rice.png’&#xff0c;在一个窗口中显示灰度级n64&#xff0c;128和256的图像直方图。2.调解图像灰度范围&#xff0c;观察变换后的图像及其直方图的变化。3.分别对图像‘pout.tif’和‘ti…

神奇的现象——body背景

当我们设置 body 背景时&#xff0c;有一个神奇的现象。 当 HTML 元素有背景时 html {background-color: lightblue }body {width: 100px;height: 100px;border: 3px dashed #f66e6e;background-color: thistle; } 显示如下&#xff1a; 注意&#xff1a; 由于 body 设置了…

CraftCMS ConditionsController.php 代码执行漏洞(CVE-2023-41892)

0x01 产品简介 Craft CMS是一个开源的内容管理系统,它专注于用户友好的内容创建过程,逻辑清晰明了,是一个高度自由,高度自定义设计的平台吗,可以用来创建个人或企业网站也可以搭建企业级电子商务系统。 0x02 漏洞概述 Craft CMS在4.4.15版本之前存在远程代码执行漏洞,…

安防综合管理系统EasyCVR平台GA/T1400视图库:基于XML的消息体格式

GA/T 1400标准的应用范围广泛&#xff0c;涵盖了公安系统的视频图像信息应用系统&#xff0c;如警务综合平台、治安防控系统、交通管理系统等。在视频监控系统中&#xff0c;GA/T 1400公安视图库的对接是实现视频图像信息传输、处理和管理的重要环节。 以视频汇聚EasyCVR视频监…