HTML 房屋租赁表单怎么实现租期起止时间的联动选择

风芳同学_7163

风芳同学_7163

2026-09-12

902人浏览

原创

租期起止时间联动的关键是结束日期不得早于开始日期且默认延后12个月:通过html的input type="date"实现语义化输入,javascript监听开始日期变化,安全计算加12个月后的结束日期并动态设置enddate的min属性与value值。

html 房屋租赁表单怎么实现租期起止时间的联动选择

租期起止时间联动的关键是:让“结束日期”不能早于“开始日期”,且通常默认结束日期为开始日期之后的固定周期(如12个月)。实现方式以 HTML + JavaScript 为主,无需后端即可完成基础校验与自动填充。

1. 基础 HTML 结构:两个日期输入框

使用原生 input type="date",确保语义清晰、移动端友好,并设置最小日期约束:

<label>租期开始日期:</label><br><input type="date" id="startDate" name="start_date"><br><br><label>租期结束日期:</label><br><input type="date" id="endDate" name="end_date" min="">

注意:endDate 的 min 属性需动态更新,初始可为空或设为今天,后续由 JS 控制。

2. JavaScript 实现日期联动逻辑

监听开始日期变化,自动计算并设置结束日期最小值和默认值(例如租1年):

html-ppt-to-pdf
html-ppt-to-pdf

将使用 `

` 约定的 HTML 幻灯片转换为高保真、矢量文本 PDF(使用 Playwright + Chromium 原生 PDF 功能)。

下载
  • 获取用户选择的开始日期(Date 对象)
  • 加12个月得到推荐结束日期(注意月份进位,避免 1月+12=13月错误)
  • 将该日期设为 endDate 的 min 和 value(若当前未填写)
  • 若用户已手动选过结束日期,且新开始日期晚于它,则重置结束日期为推荐值

示例代码(含月份安全计算):

const startDate = document.getElementById('startDate');<br>const endDate = document.getElementById('endDate');<br><br>startDate.addEventListener('change', () => {<br>  if (!startDate.value) return;<br>  const start = new Date(startDate.value);<br>  const end = new Date(start);<br>  end.setMonth(end.getMonth() + 12); // 安全加12个月<br><br>  // 格式化为 YYYY-MM-DD 字符串(input date 所需格式)<br>  const formattedEnd = end.toISOString().split('T')[0];<br><br>  // 更新 min 和 value(仅当 endDate 为空或小于 start 时)<br>  if (!endDate.value || new Date(endDate.value)     endDate.min = formattedEnd;<br>    endDate.value = formattedEnd;<br>  } else {<br>    endDate.min = startDate.value; // 至少不能早于开始日<br>  }<br>});

3. 增强体验:可选租期时长下拉切换

若支持 6个月 / 12个月 / 24个月等灵活租期,可在开始日期旁加一个 select:

<label>租期长度:</label><br><select id="leaseTerm"><br><option value="6">6个月</option>
<br><option value="12" selected>12个月</option>
<br><option value="24">24个月</option>
<br></select>

然后在 change 事件中读取 select 值,替换 end.setMonth(... + 12) 为 + parseInt(leaseTerm.value),实现动态计算。

4. 补充建议:兼容性与提示

  • 添加 required 属性强制填写,配合 title 或旁边文字提示“结束日期不得早于开始日期”
  • 移动端 Safari 对 input[date] 支持较弱,可考虑用轻量级日期库(如 flatpickr)增强体验,但非必需
  • 服务端务必再次校验(前端限制可被绕过),确保 end ≥ start

不复杂但容易忽略:日期加减要用 Date 对象方法,别直接拼字符串;min 属性影响的是可选范围,不是默认值,value 才决定显示内容。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

html5 html

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2083

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

4463

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5610

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5058

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

703

5

html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

5035

7

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

2932

4

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.31

2590

5

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.01

2619

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML5/CSS3/JavaScript/ES6入门课程
HTML5/CSS3/JavaScript/ES6入门课程

共102课时 | 10.6万人学习

HTML+CSS基础与实战
HTML+CSS基础与实战

共132课时 | 18.3万人学习

前端开发(基础+实战项目合集)
前端开发(基础+实战项目合集)

共60课时 | 6.2万人学习