【发布时间】:2019-11-01 08:11:51
【问题描述】:
我在 javascript 中有一个日期选择器。但是,在我回发到服务器后,标签会重置为默认值。我无法让它保留用户选择的值。
我尝试过移动我的代码。却不欢而散。该值始终默认为默认值。我是 javascript 的新手,所以我可能不完全了解页面生命周期。
$(document).ready(function() {
$('#reportrange').daterangepicker({
startDate: moment().subtract('days', 29),
endDate: moment(),
minDate: '01/10/2019',
maxDate: '12/31/2050',
dateLimit: {
days: 90
},
showDropdowns: true,
showWeekNumbers: true,
timePicker: false,
timePickerIncrement: 1,
timePicker12Hour: true,
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract('days', 1), moment().subtract('days', 1)],
'Last 7 Days': [moment().subtract('days', 6), moment()],
'Last 30 Days': [moment().subtract('days', 29), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract('month', 1).startOf('month'), moment().subtract('month', 1).endOf('month')]
},
opens: 'left',
buttonClasses: ['btn btn-default'],
applyClass: 'btn-small btn-primary',
cancelClass: 'btn-small',
format: 'DD/MM/YYYY',
separator: ' to ',
locale: {
applyLabel: 'Submit',
fromLabel: 'From',
toLabel: 'To',
customRangeLabel: 'Custom Range',
daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
firstDay: 1
}
},
function(start, end) {
console.log("Callback has been called!");
$('#reportrange span').html(start.format('DD/MM/YYYY') + ' - ' + end.format('DD/MM/YYYY'));
startDate = start;
endDate = end;
start = moment(start).format('YYYY-MM-DD HH:mm:ss');
end = moment(end).format('YYYY-MM-DD HH:mm:ss');
document.getElementById('<%= Hidden1.ClientID %>').value = start;
document.getElementById('<%= Hidden2.ClientID %>').value = end;
}
);
//Set the initial state of the picker label
$('#reportrange span').html(moment().subtract('days', 29).format('DD/MM/YYYY') + ' - ' + moment().format('DD/MM/YYYY'));
});
function TestClick() {
alert(startDate.format('DD/MM/YYYY') + ' - ' + endDate.format('DD/MM/YYYY'));
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<hr/>
<asp:HiddenField runat="server" ID="Hidden1" />
<asp:HiddenField runat="server" ID="Hidden2" />
<br />
我希望标签值保留用户的选择。但是一旦页面发回以更新新的详细信息,标签就会恢复到默认日期,但我需要它来保持用户选择的内容。
【问题讨论】:
-
我在您的问题中添加了一个 sn-p,这使我们可以自己查看问题所在。但是 sn-p 不起作用,它似乎不完整(例如
moment是什么)。无论如何,您可以尝试在回发之前记录值,并在之后恢复它,但在 sn-p 工作之前,我只能为您提供帮助。 -
在发布到服务器之前,将日期保存在本地变量中并重新设置。
-
标签不是asp标签,它是javascript时间选择器的一部分,被this //设置选择器标签的初始状态 $('#reportrange span').html(moment( ).subtract('days', 29).format('DD/MM/YYYY') + ' - ' + moment().format('DD/MM/YYYY'));
-
JS 总是回发到上面的默认日期。不知道如何在 JS 中保持相同
标签: javascript c# html asp.net