Datepicker和jQuery对话框(Modal)都是jQuery UI库中常用的组件:
同时使用这两个组件可以:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Datepicker in Dialog</title>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<style>
#dialog-form { display: none; }
</style>
</head>
<body>
<button id="open-dialog">打开对话框</button>
<div id="dialog-form" title="选择日期">
<p>
<label for="date">日期:</label>
<input type="text" id="date" name="date">
</p>
</div>
<script>
$(function() {
// 初始化对话框
$("#dialog-form").dialog({
autoOpen: false,
height: 300,
width: 350,
modal: true,
buttons: {
"确定": function() {
alert("选择的日期是: " + $("#date").val());
$(this).dialog("close");
},
"取消": function() {
$(this).dialog("close");
}
}
});
// 打开对话框按钮点击事件
$("#open-dialog").on("click", function() {
$("#dialog-form").dialog("open");
});
// 初始化日期选择器
$("#date").datepicker({
dateFormat: "yy-mm-dd",
minDate: 0 // 限制不能选择今天之前的日期
});
});
</script>
</body>
</html>
原因:对话框的z-index值可能低于Datepicker的z-index 解决方案:
$("#date").datepicker({
beforeShow: function(input, inst) {
inst.dpDiv.css({
'z-index': 9999 // 确保高于对话框的z-index
});
}
});
原因:对话框关闭时没有销毁Datepicker实例 解决方案:
$("#dialog-form").dialog({
close: function() {
$("#date").datepicker("hide");
}
});
解决方案:
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
$("#date").attr('type', 'date'); // 使用原生日期选择器
} else {
$("#date").datepicker(); // 使用jQuery UI Datepicker
}
$("#dialog-form").dialog({
autoOpen: false,
buttons: {
"确定": function() {
var startDate = $("#start-date").val();
var endDate = $("#end-date").val();
alert("选择的范围是: " + startDate + " 至 " + endDate);
$(this).dialog("close");
}
}
});
$("#start-date, #end-date").datepicker({
dateFormat: "yy-mm-dd",
onSelect: function(selectedDate) {
if(this.id == "start-date") {
$("#end-date").datepicker("option", "minDate", selectedDate);
}
}
});
.ui-datepicker {
background: #f0f0f0;
border: 1px solid #ccc;
border-radius: 4px;
padding: 10px;
}
.ui-datepicker-header {
background: #428bca;
color: white;
border: none;
}
.ui-datepicker-prev, .ui-datepicker-next {
cursor: pointer;
}
通过以上方法和示例,您可以灵活地在jQuery对话框中集成Datepicker功能,创建丰富的用户交互体验。
没有搜到相关的文章