【发布时间】:2019-06-10 18:40:33
【问题描述】:
我正在使用 daterangepicker v3.0.3 并使用以下代码将所有具有 .date 类的输入初始化为它们是单个日期选择器:
function checkDateInput() {
var input = document.createElement('input');
input.setAttribute('type','date');
var notADateValue = 'not-a-date';
input.setAttribute('value', notADateValue);
return (input.value !== notADateValue);
}
// Check if the browser supports the <input type="date" />
if (checkDateInput()) {
// Change the types on the inputs that are dates
$('.date').prop('type', 'date');
} else {
// Iterate through each <input class="date" ... />
$.each($('.date'), function(key, value) {
$(value).daterangepicker({
drops: "up",
showDropdowns: true,
singleDatePicker: true,
});
});
}
<!-- jquery -->
<script src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
<!-- bootstrap -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" rel="stylesheet"/>
<!-- daterangepicker -->
<script src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
<script src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css" rel="stylesheet"/>
<form>
<fieldset>
<legend>Dates</legend>
<div class="form-group">
<label for="date_written">Date Written</label>
<input class="form-control date" id="date_written" name="date_written" required="required" />
</div>
<div class="form-group">
<label for="effective_date">Effective Date</label>
<input class="form-control date" id="effective_date" name="effective_date" required="required" />
</div>
<div class="form-group">
<label for="cancellation_date">Cancellation Date</label>
<input class="form-control date" id="cancellation_date" name="cancellation_date" />
</div>
</fieldset>
<button type="submit" class="btn btn-success">Submit</button>
</form>
我遇到的问题是,如果我决定不选择日期并在日历外单击,它会自动输入今天的日期,而我宁愿它根本不插入任何内容。我假设我需要将autoUpdateInput 设置为 False,但如果实际选择了日期,我不知道如何手动更新输入。
【问题讨论】:
-
我无法从
chrome浏览器重现您的问题,您能解释一下陷入问题的步骤吗? -
@Shidersz - checkDateInput 函数会阻止 daterangepicker 在 Chrome 上初始化。这个想法是,如果 Web 浏览器有日期输入 UI,则使用它,否则如果没有,则使用 daterangepicker 代替它。因此,如果您启动 IE,单击日期字段,但单击 daterangepicker UI 之外的任意位置以模拟用户未选择值,则会复制问题。