layui.laydate.render
时间: 2025-07-25 09:25:43 浏览: 2
### 基本用法
`laydate.render(options)` 是 Layui 框架中用于初始化日期时间选择器的方法。通过传入配置参数 `options` 来定义日期控件的行为和样式。
以下是一个基础示例,展示如何绑定一个输入框并启用日期时间选择器:
```html
<input type="text" id="test" />
<script>
layui.use('laydate', function(){
var laydate = layui.laydate;
// 初始化日期时间选择器
laydate.render({
elem: '#test', // 绑定元素的ID
type: 'datetime' // 设置选择类型为日期+时间
});
});
</script>
```
### 进阶用法
除了基本功能外,`laydate.render` 还支持多种扩展配置,例如设置最小/最大日期、主题颜色、以及动态提示等。
#### 设置最小/最大日期范围
可以使用 `min` 和 `max` 属性来限制用户可选择的日期范围:
```html
<input type="text" id="test3" />
<script>
layui.use('laydate', function(){
var laydate = layui.laydate;
laydate.render({
elem: '#test3',
type: 'datetime',
min: '2019-7-28 12:30:00',
max: '2019-8-28 12:30:00',
theme: '#393D49',
calendar: true
});
});
</script>
```
#### 动态提示与事件监听
可以通过 `change` 事件监听日期变化,并调用 `hint` 方法在控件上显示当前值:
```html
<input type="text" id="test" />
<script>
layui.use(['laydate'], function(){
var laydate = layui.laydate;
var ins1 = laydate.render({
elem: '#test',
change: function(value, date) {
ins1.hint(value); // 在控件上弹出当前选择的值
}
});
});
</script>
```
#### 自定义触发方式
默认情况下,控件会在点击输入框时弹出,但也可以通过 `trigger` 参数自定义触发行为,例如通过点击按钮打开日期选择器:
```html
<input type="text" id="test" />
<button class="layui-btn" onclick="openDate()">打开日期选择器</button>
<script>
var ins1;
layui.use('laydate', function(){
var laydate = layui.laydate;
ins1 = laydate.render({
elem: '#test',
type: 'date',
trigger: 'click' // 触发方式为点击
});
});
function openDate() {
ins1.hint(); // 手动触发弹出控件
}
</script>
```
### 主题与样式定制
Layui 允许通过 `theme` 参数修改日期控件的主题色,以匹配网站的整体风格:
```html
<input type="text" id="test_theme" />
<script>
layui.use('laydate', function(){
var laydate = layui.laydate;
laydate.render({
elem: '#test_theme',
theme: '#FF5722' // 使用橙红色主题
});
});
</script>
```
### 显示公历节假日信息
如果希望在日历中显示公历节假日信息,可以启用 `calendar: true` 配置项:
```html
<input type="text" id="test_calendar" />
<script>
layui.use('laydate', function(){
var laydate = layui.laydate;
laydate.render({
elem: '#test_calendar',
calendar: true // 启用公历节假日显示
});
});
</script>
```
阅读全文
相关推荐











<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>收费项目列表</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<style>
.x-nav { padding: 0 20px; position: relative; z-index: 99; border-bottom: 1px solid #e5e5e5; line-height: 60px; }
.x-body { padding: 20px; }
.layui-table td, .layui-table th { padding: 9px 15px; }
.td-manage a { margin: 0 5px; }
.dialog-mask {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0,0,0,0.5);
z-index: 999;
display: flex;
justify-content: center;
align-items: center;
}
.dialog-content {
background: #fff;
padding: 20px;
border-radius: 5px;
width: 800px;
max-height: 90vh;
overflow-y: auto;
}
.x-red { color: red; }
</style>
</head>
<body>
首页
收费管理
收费项目列表
刷新
添加收费项目
ID
所属小区
收费编号
项目名称
创建时间
{{ item.id }}
{{ item.x_id }}
{{ item.m_count }}
{{ item.m_name }}
{{ item.creat_Time }}
{{ dialogTitle }}
<form class="layui-form layui-form-pane">
<input type="hidden" v-model="formData.id">
<label class="layui-form-label">
*所属小区
</label>
<input type="text" v-model="formData.x_id" placeholder="请输入所属小区编号"
class="layui-input" lay-verify="required">
<label class="layui-form-label">
*收费名称
</label>
<input type="text" v-model="formData.m_name" placeholder="请输入项目名称"
class="layui-input" lay-verify="required">
<button class="layui-btn layui-btn-primary" type="button" @click="dialogVisible = false">取消</button>
<button class="layui-btn" type="button" @click="submitForm">确定</button>
</form>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
<script src="https://www.layuicdn.com/layui-v2.6.8/layui.js"></script>
<script>
// 从localStorage获取房产数据
function getproData() {
const data = localStorage.getItem('proData');
return data ? JSON.parse(data) : [
{
id: '3',
x_id: '1',
m_count: 'A栋',
m_name: '金华小区A栋',
create_Time: '2019-12-13'
},
{
id: '2',
x_id: '2',
m_count: 'A栋',
m_name: '金华小区A栋',
create_Time: '2019-12-11'
},
{
id: '1',
x_id: '3',
m_count: 'A栋',
m_name: '金华小区A栋',
create_Time: '2019-12-12'
}
];
}
new Vue({
el: '#app',
data: {
proList: getproData(),
dialogVisible: false,
dialogTitle: '编辑收费项目',
currentIndex: -1,
formData: {
id: '',
x_id: '',
m_count: '',
m_name: '',
create_Time: ''
}
},
mounted() {
this.initLayui();
},
methods: {
initLayui() {
layui.use(['form', 'laydate', 'layer'], () => {
const form = layui.form;
const laydate = layui.laydate;
window.layer = layui.layer;
form.render();
laydate.render({
elem: '#checkInDate',
max: '2099-12-31',
done: (value) => {
this.formData.create_Time = value;
}
});
});
},
refresh() {
this.proList = getproData();
layer.msg('刷新成功', {icon: 1});
},
editItem(index) {
this.dialogTitle = '编辑收费项目';
this.currentIndex = index;
this.formData = JSON.parse(JSON.stringify(this.proList[index]));
this.dialogVisible = true;
this.$nextTick(() => {
layui.form.render();
// 重新初始化日期选择器,确保显示正确的日期
layui.laydate.render({
elem: '#checkInDate',
max: '2099-12-31',
value: this.formData.create_Time,
done: (value) => {
this.formData.create_Time = value;
}
});
});
},
deleteItem(index) {
const _this = this;
layer.confirm('确定要删除这条记录吗?', function(){
_this.proList.splice(index, 1);
localStorage.setItem('houseData', JSON.stringify(_this.proList));
layer.msg('删除成功', {icon: 1});
});
},
submitForm() {
const form = layui.form;
// 验证表单
form.verify();
if (!this.validateForm()) {
return;
}
// 编辑
this.proList.splice(this.currentIndex, 1, this.formData);
// 保存到localStorage
localStorage.setItem('proData', JSON.stringify(this.proList));
this.dialogVisible = false;
layer.msg('编辑成功', {icon: 1});
},
validateForm() {
if (!this.formData.x_id) {
layer.msg('请输入所属小区', {icon: 5});
return false;
}
if (!this.formData.m_name) {
layer.msg('请输入名称', {icon: 5});
return false;
}
if (!this.formData.m_name) {
layer.msg('项目名称不能为空', {icon: 5});
return false;
}
return true;
},
}
});
</script>
</body>
</html>
表单无法显示数据,写出更改后的代码







