我正在尝试创建嵌入/内联日期选择器,它不可点击 - 它应该只显示日期,表现为只读。
我的做法是从模型中填充日历所选日期,然后尝试使其不可点击,以防用户认为可以编辑任何内容。
我正在使用eternicode-bootstrap-datepicker - 使其支持多个日期。
到目前为止,我已经完成了以下操作:
<link rel="stylesheet" href="<c:url value="/resources/js/lib/eternicode-bootstrap-datepicker/css/datepicker3.css" />" />
<script src="<c:url value="/resources/js/lib/eternicode-bootstrap-datepicker/js/bootstrap-datepicker.js"/>"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#datepicker-inline").datepicker({
multidate : true,
todayHighlight : true,
});
var dates = [];
var i = 0;
<c:forEach items="${course.selectedDates}" var="selectedDate">
console.log("${selectedDate}");
dates[i++] = new Date("${selectedDate}");
</c:forEach>
$("#datepicker-inline").datepicker('setDates', dates);
// something to make it readonly
$(".day").click(function(event) {
console.log("preventing");
event.preventDefault();
});
});
</script>
<div class="col-xs-8">
<h4>Dates</h4>
<div id="datepicker-inline"></div>
</div>
如您所见,我正在尝试阻止在日历中点击.day的默认操作。控制台显示“preventing”,但它仍将该天检查为已选。
您有任何想法如何使其禁用/无效/只读?
所有关于只读的主题都是关于使<input>只读,但仍能从日期选择器中选择日期。
$('.day').click
事件中,尝试在event.preventDefault();
后添加event.stopPropagation();
了吗?不确定它是否跨浏览器兼容或者是否适用于像你所拥有的div
,但值得一试。我刚刚在 Chrome 中尝试过(使用一个input
),它阻止了日期被点击。 - Brian