执行回发时,jQuery UI DatePicker值丢失的ASP.NET文本框

我有一个在ASP.NET文本框控件上使用jQuery UI DatePicker的应用程序。

控件按预期工作,但我注意到当您从服务器调用回发(通过提交按钮)时,输入的值会在应用程序中丢失。

想知道你们是否都经历过这个? 您需要采取哪些措施来防止这种情况发生?

 var callsMadeFromId = '#'; jQuery(callsMadeFromId).datepicker({ showOn: "button", buttonImage: "../images/calendar.gif", altFormat: 'dd/mm/yy', buttonImageOnly: true, onSelect: function () { } }); 

您可以考虑在隐藏字段中保存文本框的值。 我使用Jquery tabcontrols这样做,因为他们也忘记了在回发期间选择了哪个选项卡。

我也遇到了这个问题,甚至在试图在页面上设置视图状态或控制后它也没有进行锻炼。 当用户正在播放日期时,使用隐藏字段的方法来管理日期字段和隐藏字段之间的同步。 所以我决定再次在document.ready中设置日期,如此处的post所示,希望这会有所帮助。

http://www.himanshusaxena.net/asp-net-text-box-with-jquery-ui-date-picker-value-lost-on-a-post-back/

确保你没有将<%@ Page EnableViewState="false"%>放入..如果你这样做了,你仍然可以通过打开单个控件的视图状态

使用此解决方案,您不需要任何jQuery技巧。 您必须记住,在每个回发中始终以MM / DD / YYYY格式将日期发送到TextBox,如果您使用DD / MM / YYYY,则无关紧要。

解:

在ASPX中:

   

在codebehind(C#)中,使用Page_LoadComplete事件将每个回发中的日期转换为MM / DD / YYYY。 我使用此事件是因为是在Page_Unload之前执行的最后一件事,您不必在每个事件中转换日期:

 protected void Page_LoadComplete(object sender, EventArgs e) { if (txtFechaIni.Text.Length == 10) { //Transform DD/MM/YYYY to MM/DD/YYYY. txtFechaIni.Text = txtFechaIni.Text .Substring(3, 2) + "/" + txtFechaIni.Text .Substring(0, 2) + "/" + txtFechaIni.Text .Substring(6, 4) } } 

希望它可以帮到某人。