我在更新面板中有一个jquery ui datepicker文本框。出于某种原因,我无法再点击它来加载datepicker。这就是我所拥有的。
// Datepicker settings
$('body').on('load', '#dpWorkWeek', function() {
$(this).datepicker({
changeMonth: true,
changeYear: true,
});
});
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="dpWorkWeek" runat="server" ClientIDMode="Static" CssClass="dpWorkWeek"></asp:TextBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnLoadTimesheet" />
</Triggers>
答案 0 :(得分:5)
我认为您遇到的问题是您的日期选择器在异步回发后不再有效。如果是这种情况,这是一种解决方法 -
window.onload = function () {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
}
function endRequestHandler(sender, args) {
init();
}
function init() {
$("#<%=dpWorkWeek.ClientID %>").datepicker({
changeMonth: true,
changeYear: true
});
}
$(function() { // DOM ready
init();
});
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="dpWorkWeek" runat="server" CssClass="dpWorkWeek"></asp:TextBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnLoadTimesheet" />
</Triggers>
此方法使用Sys.WebForms.PageRequestManager JavaScript class,因为您的.aspx页面上有Script Manager,因此可以使用{{3}}。基本上每次异步回发后都会调用init()函数。
请注意,在DOM ready中也调用了init()函数。这使您可以在异步回发期间更改内容后再次执行所需的DOM。
我还删除了您的ClientIdMode
属性,我认为这会导致问题。
/编辑
在看到下面的答案之后,你当然可以这样做,我喜欢它的简洁 -
function pageLoad(sender, args) {
$("#<%=dpWorkWeek.ClientID %>").datepicker({
changeMonth: true,
changeYear: true
});
}
如果这不起作用,这应该总是 -
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function(sender, args) {
// ...
});
答案 1 :(得分:3)
是的,JQuery datepicker在更新面板中不能正常工作。
问题是因为字段失去了绑定,因为body
触发时未调用onLoad
UpdatePanel
函数。所以你有几个选择:
如果UpdatePanel
没有触发计时器或其他任何问题,最后一种方法可能对您无关紧要。要使用“always rebind”方法,请将初始化移至javascript函数pageLoad()
:
function pageLoad(sender, args)
{
// Fix the datepicker here
}
编辑:是的,所有回发都会调用pageLoad
函数,即使名称似乎暗示其他情况。
答案 2 :(得分:-1)
这在我的代码中有效,请遵循此代码。
( Company : Infotrack Telematics private limited )
<script type="text/javascript">
$(document).ready(function () {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
});
function endRequestHandler(sender, args) {
init();
}
function init() {
var txtTripStartTime = '#<%=txtNotavlFrom.ClientID %>';
$('#<%=txtNotavlFrom.ClientID %>').datepicker({
dateFormat: 'dd/mm/yy',
minDate: 0,
beforeShow: function () {
$(".ui-datepicker").css('font-size', 10)
},
onSelect: function (selected) {
$('#<%=txtnotavlTo.ClientID %>').datepicker("option", "minDate", selected)
}
});
var txtTripEndTime = '#<%=txtnotavlTo.ClientID %>';
$('#<%=txtnotavlTo.ClientID %>').datepicker({
dateFormat: 'dd/mm/yy',
minDate: 0,
beforeShow: function () {
$(".ui-datepicker").css('font-size', 10)
}
});
}