嘿伙计们我正在尝试创建一个可以选择一天的搜索。
我想通过下拉选择和日历来提供该选项。
我正在使用Bootstrap和JQuery-UI datepicker。
我的代码正在运行,两个选项都在工作但是
我希望当用户在日历上选择一天时,也可以动态更改下拉日期。
这是我的代码:
<div class="input-group col-lg-2 col-md-12 col-sm-12 search">
<label class="bd-form-label" style="float: left;width: 100%;">Dates</label>
<select name="name" id="name_id" style="width: 80%;float: left;">
<option value="">Any Month</option>
<option value="October 2017">October 2017</option>
<option value="November 2017">November 2017</option>
<option value="December 2017">December 2017</option>
<option value="January 2018">January 2018</option>
</select>
<input type="hidden" id="datepicker" class="hasDatepicker" value="16-Oct-2017" style="">
<img class="ui-datepicker-trigger" src="http://jqueryui.com/resources/demos/datepicker/images/calendar.gif" alt="..." title="...">
</div>
&#13;
例如,如果用户点击2019年10月的日历,请选择显示2019年10月的选项,因为我的输入为<input type="hidden" />
。
这是可能的还是我应该选择其中一种?
任何反馈都会有所帮助
答案 0 :(得分:3)
可以通过格式化日期输出格式($( "#datepicker" ).datepicker( "option", "dateFormat", "MM yy" );
)然后设置下拉值($('#name_id').val($('#datepicker').val());
)来完成。
尝试在代码段下面运行
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>jQuery UI Datepicker - Format date</title>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$( function() {
$("#datepicker").datepicker();
//Below line will set format for date "Month year" .Note This format is custom,according to the drop down value
$( "#datepicker" ).datepicker( "option", "dateFormat", "MM yy" );
//On change of Date from date picker, this will set value in select dropdown
$('#datepicker').change(function(){
$('#name_id').val($('#datepicker').val());
});
} );
</script>
</head>
<body>
<p>Calendar: <input type="text" id="datepicker" size="30"></p>
<div class="input-group col-lg-2 col-md-12 col-sm-12 search">
<label class="bd-form-label" style="float: left;width: 100%;">Dates</label>
<select name="name" id="name_id" style="width: 80%;float: left;">
<option value="">Any Month</option>
<option value="October 2017">October 2017</option>
<option value="November 2017">November 2017</option>
<option value="December 2017">December 2017</option>
<option value="January 2018">January 2018</option>
</select>
</div>
</body>
</html>
&#13;
答案 1 :(得分:1)
首先,我想告诉大家,我已经使用Moment库进行日期解释。
您只需在代码(CDN)中包含以下库链接。
https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js
现在,我已经使用Jquery ui-Datepicker进行日期选择器初始化。其中,我使用了 onSelect
更改事件来获取所选日期。
然后,我利用这个时刻以MMMM-YYYY
格式获取月份和年份。
最后,我在下拉列表中设置了此选项。我还检查选项是否已存在,不要将其插入下拉列表中
因此,无论您选择哪个日期,该月份都会插入到下拉列表中并进行选择。
以下是小提琴链接。
如果符合您的要求,请告诉我。谢谢!
$('#date1').datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: "mm/dd/yy",
onSelect: function(dateText) {
var monthObj=moment(dateText,"MM/DD/YYYY");
var drop_option=monthObj.format('MMMM YYYY');
if($("#name_id option[value='"+drop_option+"']").length == 0){
$('#name_id').append( '<option value="'+drop_option+'">' + drop_option + '</option>');
}
$("#name_id option[value='"+drop_option+"']").prop('selected', true);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script>
<div class="input-group col-lg-2 col-md-12 col-sm-12 search">
<label class="bd-form-label" style="float: left;width: 100%;">Dates</label>
<select name="name" id="name_id" style="width: 80%;float: left;">
<option value="">Any Month</option>
<option value="October 2017">October 2017</option>
<option value="November 2017">November 2017</option>
<option value="December 2017">December 2017</option>
<option value="January 2018">January 2018</option>
</select>
<input type="hidden" id="datepicker" class="hasDatepicker" value="16-Oct-2017" style="">
<img class="ui-datepicker-trigger" src="http://jqueryui.com/resources/demos/datepicker/images/calendar.gif" alt="..." title="...">
</div>
<input type="text" id="date1" name="date1"/> <br/>