当前位置: 首页 > news >正文

Vue 校验输入时间与当前时间差大于等于3小时

方法一:使用 Vue 表单验证

<template><div><form @submit.prevent="submitForm"><label>选择时间:<input type="datetime-local" v-model="selectedTime":min="minDateTime"required></label><div v-if="error" style="color: red;">{{ error }}</div><button type="submit">提交</button></form></div>
</template><script>
export default {data() {return {selectedTime: '',error: '',minDateTime: this.getMinDateTime()};},methods: {getMinDateTime() {const now = new Date();now.setHours(now.getHours() + 3);return now.toISOString().slice(0, 16);},validateTime() {if (!this.selectedTime) {this.error = '请选择时间';return false;}const selected = new Date(this.selectedTime);const now = new Date();const diffInHours = (selected - now) / (1000 * 60 * 60);if (diffInHours < 3) {this.error = '选择的时间必须至少比当前时间晚3小时';return false;}this.error = '';return true;},submitForm() {if (this.validateTime()) {// 表单验证通过,执行提交操作console.log('表单提交', this.selectedTime);}}}
};
</script>

方法二:使用 Vuelidate 或 VeeValidate

<template><div><ValidationObserver v-slot="{ handleSubmit }"><form @submit.prevent="handleSubmit(submitForm)"><ValidationProvider name="时间" rules="required|minTime:3"v-slot="{ errors }"><label>选择时间:<input type="datetime-local" v-model="selectedTime":min="minDateTime"></label><span style="color: red;">{{ errors[0] }}</span></ValidationProvider><button type="submit">提交</button></form></ValidationObserver></div>
</template><script>
import { extend } from 'vee-validate';
import { required } from 'vee-validate/dist/rules';// 添加必填规则
extend('required', {...required,message: '请选择时间'
});// 添加自定义时间验证规则
extend('minTime', {validate(value, { hours }) {if (!value) return false;const selected = new Date(value);const now = new Date();const diffInHours = (selected - now) / (1000 * 60 * 60);return diffInHours >= hours;},params: ['hours'],message: '选择的时间必须至少比当前时间晚{hours}小时'
});export default {data() {return {selectedTime: '',minDateTime: this.getMinDateTime()};},methods: {getMinDateTime() {const now = new Date();now.setHours(now.getHours() + 3);return now.toISOString().slice(0, 16);},submitForm() {// 表单验证通过,执行提交操作console.log('表单提交', this.selectedTime);}}
};
</script>

http://www.dtcms.com/a/610296.html

相关文章:

  • html中网站最下面怎么做设计主题网站
  • 起重机智能选型:从血泪教训到科技护航的革新之路
  • java+maven配置yguard的一次实验
  • 汝南县网站建设Wordpress实现中英文
  • ASC学习笔记0006:游戏效果将如何复制到客户端
  • 延安市住建建设网站无锡网站营销推广
  • 我想做网站服务器选用什么电子商务网站建设总结与体会
  • Oracle分页sql
  • Airsim仿真、无人机、无人车、Lidar、深度强化学习
  • Airsim仿真、无人机、Lidar深度相机、DDPG深度强化学习
  • 做做网站下载2023常熟网站网站建设
  • app推广策略WordPress优化百度广告
  • pinctrl子系统介绍
  • python-MCPServer拉取和使用部署
  • 17.TCP编程(二)和序列化
  • x^3 - 3x + 1 = 0
  • Nacos 9848启动端口占用 Failed to bind to address 0.0.0.0/0.0.0.0:9848
  • 前端react 开发 图书列表分页
  • 做vip视频网站赚钱吗最近一周新闻大事件
  • 大数据安全技术实验:Hadoop环境部署
  • 【07】特征匹配算法:ORB算法深度解析与实现
  • vite7更新了哪些内容
  • Aemulo2.0门禁卡复制卡片后修改设置卡片备注名称
  • IP应用场景全图谱:你的IP属于哪一类?
  • 微网站开发 在线商城一键部署wordpress
  • Rust实战:使用Clap和Tokio构建现代CLI应用
  • 中移建设有限公司网站猎头可以做单的网站
  • PostIn V1.3.4版本发布,新增性能测试执行明细,ldap/企业微信/钉钉登录调整为社区版本功能
  • MySQL——表的约束
  • springboot对接xxl-job