【发布时间】:2016-10-03 00:04:00
【问题描述】:
据我所知,包括这样的例子
jQuery Datepicker - refresh pickable days based on selected option
这段代码应该可以工作。
这是我调用外部 jquery 脚本的地方
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/ui/1.12.0/jquery-ui.js"></script>
如果我使用的是引导主题但没有加载引导日期选择器,我会注意。
当我加载页面时,日期选择器可以使用下面的代码正常加载。 (我会注意到我使用的是 jquery 更改事件,但将我的代码切换为更接近上述答案,以防我遗漏了一些小东西
$(function(ready){
$(function() {
$('#datepicker').datepicker({
format: "mm/dd/yy",
minDate: "+2W",
maxDate: "+6W"
});
});
});
HTML
<input type="radio" onchange="loadDatePicker()" tabindex="7" class="change" id="radio_1" name="freq" value="1"> Monthly <input type="radio" onchange="loadDatePicker()" tabindex="8" id="radio_2" class="change" name="freq" value="2"> Bi-Weekly
<input class="form-control" tabindex="9" onkeyup="slashfunc(this.id)" onchange="datefunc(this.id)" type="text" id="datepicker" value="{{date}}">
输出的HTML如下:
<input class="form-control hasDatepicker" tabindex="9" onkeyup="slashfunc(this.id)" onchange="datefunc(this.id)" type="text" id="datepicker" value="">
然后我单击我的单选按钮并调用以下代码
function loadDatePicker(){
console.log("test")
$('#datepicker').datepicker("destroy");
if($("input[type='radio'][name='freq']:checked").val() == 1){
$('#datepicker').datepicker({
format: "mm/dd/yy",
minDate: "+2W",
maxDate: "+6W"
});
}else if($("input[type='radio'][name='freq']:checked").val() == 2){
$('#datepicker').datepicker({
format: "mm/dd/yy",
minDate: "+2W",
maxDate: "+2W10D"
});
}
$('#datepicker').datepicker("refresh");
}
我可以看到输入的变化一秒钟,但很快又回来了
<input class="form-control hasDatepicker" tabindex="9" onkeyup="slashfunc(this.id)" onchange="datefunc(this.id)" type="text" id="datepicker" value="">
但是,现在点击日期选择器的输入时,日期选择器不再出现。
【问题讨论】:
-
日期选择器消失的唯一可能原因是`$('#datepicker').datepicker("destroy");`。您确定您的复选框值没有被其他地方操纵吗?我在这里试过你的代码:jsfiddle.net/rvaldez/D4AGz,它按预期运行。
-
@Runcorn 我找到了导致问题的原因。如果您对为什么这是一个问题有任何见解,我很想知道它是什么。
标签: javascript jquery jquery-ui jquery-ui-datepicker