选择预定义范围时防止日期范围选择器关闭

den*_*ero 2 jquery daterangepicker

我使用 Dan Grossman 的 DateRangePicker 插件为用户提供一种为我网站上的特定功能选择预定义和自定义日期范围的方法。我已经可以使用它了,但是我有一个无法解决的棘手问题。

当用户单击预定义的日期范围时,引导下拉菜单将关闭。这导致用户必须重新打开日期选择器并单击“应用”按钮才能执行该功能。

我希望下拉菜单在单击预定义的日期范围后保持打开状态。然后,如果用户对范围感到满意,则可以快速单击“应用”按钮。

我已经尝试过以下方法:

$(function() {
    $(document).on('click', '.ranges li', function(e) {
        e.preventDefault();
    });
});
Run Code Online (Sandbox Code Playgroud)

这有效地防止了下拉菜单关闭,但它不会执行“clickRange”函数以便在适当的输入中设置开始和结束日期。

Abh*_*eet 5

show()当您选择“自定义范围”以外的范围时,仅显示呼叫功能。

您可以使用以下代码:

	$(function() {
		var listItem,applyClicked=false;
		/* $(document).on('click', '.ranges li', function(e) {
			e.preventDefault();
		}); */

		var start = moment().subtract(29, 'days');
		var end = moment();

		function cb(start, end) {
			/* console.log(start.format('MMMM D, YYYY') + ' - '
					+ end.format('MMMM D, YYYY')); */
			$('#reportrange span').html(
					start.format('MMMM D, YYYY') + ' - '
							+ end.format('MMMM D, YYYY'));
		}

		$('#reportrange').daterangepicker(
				{
					startDate : start,
					endDate : end,
					ranges : {
						'Today' : [ moment(), moment() ],
						'Yesterday' : [ moment().subtract(1, 'days'),
								moment().subtract(1, 'days') ],
						'Last 7 Days' : [ moment().subtract(6, 'days'),
								moment() ],
						'Last 30 Days' : [ moment().subtract(29, 'days'),
								moment() ],
						'This Month' : [ moment().startOf('month'),
								moment().endOf('month') ],
						'Last Month' : [
								moment().subtract(1, 'month').startOf('month'),
								moment().subtract(1, 'month').endOf('month') ]
					}
				}, cb);

		$(".ranges ul li").click(function() {
			listItem = $(this).text();
		});
		$(".range_inputs ").click(function() {
			applyClicked=true;
		});

		$('#reportrange').on('apply.daterangepicker', function(ev, picker) {
			console.log(listItem +" : "+ applyClicked);
			if(listItem!="Custom Range" && !applyClicked){
				picker.show();
				applyClicked=false;
			}
				
			//ev.preventDefault();

		});

		cb(start, end);

	});
Run Code Online (Sandbox Code Playgroud)
<!-- Include Required Prerequisites -->
<script type="text/javascript"
	src="//cdn.jsdelivr.net/jquery/1/jquery.min.js"></script>
<script type="text/javascript"
	src="//cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<link rel="stylesheet" type="text/css"
	href="//cdn.jsdelivr.net/bootstrap/latest/css/bootstrap.css" />

<!-- Include Date Range Picker -->
<script type="text/javascript"
	src="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.js"></script>
<link rel="stylesheet" type="text/css"
	href="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.css" />



<div id="reportrange" class="pull-right"
		style="background: #fff; cursor: pointer; padding: 5px 10px; border: 1px solid #ccc; width: 100%">
		<i class="glyphicon glyphicon-calendar fa fa-calendar"></i>&nbsp; <span></span>
		<b class="caret"></b>
	</div>
Run Code Online (Sandbox Code Playgroud)

需要帮助请叫我。