- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 jQueryUI 日期选择器和 UpdatePanel 中遇到了一个非常有趣的错误,其中日期选择器选择的日期大约是 100 年后。 jQuery 的版本为 1.6.2,jQueryUI 的版本为 1.8.14。这是粗略的布局:
<asp:UpdatePanel ID="myUpdatePanel" runat="server">
<ContentTemplate>
<asp:DropDownList ID="myDdl" runat="server" AutoPostBack="true">
<asp:ListItem Value="foo" Text="Foo" />
<asp:ListItem Value="bar" Text="Bar" />
</asp:DropDownList>
<asp:TextBox ID="myText" runat="server" CssClass="dateText" />
</ContentTemplate
</asp:UpdatePanel>
<script type='text/javscript'>
$(document).ready(function()
{
$('.dateText').datepicker({ changeYear: true, showButtonPanel: true, yearRange: '-2:+2' });
}
function pageLoad(sender, args)
{
if (args._isPartialLoad == true)
{
$('.dateText').datepicker({ changeYear: true, showButtonPanel: true, yearRange: '-2:+2' });
}
}
</script>
所以我有一个 UpdatePanel,其中包含一个下拉列表(更改时会导致回发)以及一个文本框。我已经将 jQueryUI 将文本框设置为日期选择器。请注意,所有这些都包含在 jQueryUI 模式对话框中。
所以发生的事情是这样的:
日期选择器在部分回发后已经打开的情况下初始化时似乎会感到困惑。我知道日期选择器设置无法在部分回发后继续存在,并且我需要在 pageLoad
中重新初始化它。功能。
我可以通过检查 $('.ui-datepicker-title').length
来判断是否发生这种情况在 pageLoad
中设置日期选择器时大于零。但我不知道从那里该做什么。验证它发生后,我在 pageLoad
中尝试了以下操作在设置日期选择器之前:
$('.dateText').unbind();
$('.dateText').datepicker('destroy');
$('#ui-datepicker-div').remove();
它要么做同样的事情,要么自行关闭并且根本不再出现。
我该如何解决这个问题?
更新:我尝试使用 jQueryUI 1.8.18 和 jQuery 1.7.1(撰写本文时的最新版本),问题仍然发生。
更新 2:我已经通过在 onChangeMonthYear
的选项中提供一个函数来解决这个问题。当日期选择器在 pageLoad
中初始化时。如果该事件的年份参数是 1899 或 1900,我将日期选择器的日期设置为从现在起向前或向前一个月(分别)。这设置了文本框的内容,这是我不想要的,因此我将文本框的值设置为“”。最终结果是日期选择器正常工作。
不过,我仍然想更好地理解整个问题,所以我知道这是否是 jQueryUI 中的一个错误,我应该提交,或者我是否应该在其他地方做一些不同的事情。
更新 3:ASP.NET 4、jQuery 1.7.2 和 jQueryUI 1.8.21 仍然会发生这种情况。我在一个空白页面上使用与此处描述的设置相同的设置对其进行了测试,并看到了相同的行为。我将此称为 jQueryUI 错误。已提交here .
更新 4:我在 this jsfiddle 中重现了没有 ASP.NET 的问题.
最佳答案
根据the jQueryUI bug I filed的评论,这不是真正应该发生的情况。但我认为它会发生,所以我将在这里发布我的解决方法以供将来引用。
给定一个 ID 为 myInput
的输入:
var changingDate = false;
$('#myInput').datepicker({onChangeMonthYear:function(year, month, inst)
{
if (changingDate == false)
{
changingDate = true; //I set the date later which would call this
//and cause infinite recursion, so use this flag to stop that
if (year == 1899 || year == 1900)
{
var now = new Date(); //what the picker would have had selected
//before clicking the forward/backward month button
if (year == 1899) //I clicked backward
{
now.setMonth(new.getMonth() - 1);
}
else if (year == 1900) //I clicked forward
{
now.setMonth(now.getMonth() + 1);
}
$(this).datepicker('setDate', now);
}
changingDate = false;
}
}
});
从 pageLoad
函数初始化选取器时,使用上面显示的 onChangeMonthYear
选项:
function pageLoad(sender, args)
{
if (args._isPartialLoad == true) //called because of UpdatePanel refresh
{
//set up datepicker as shown above
}
}
关于ASP.NET 部分回发期间打开时的 jQueryUI 日期选择器行为 : year becomes 1899 or 1900,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9470736/
我正在关注 this tutorial在 jqueryui 工具提示中显示验证错误。验证工作正常,但我无法显示正确的错误消息,因为正确的属性无法有条件地链接到工具提示,如下面的示例所示: $(docu
我在 ASP.NET 页面中使用 jqGrid 并将数据注入(inject)到页面上的脚本 block 中,然后从那里加载。对于这一用例,我们需要立即在屏幕上显示大量数据。其中涉及 300~500 条
This jQuery plugin ,它允许用户在 div 中绘制矩形,适用于 jQueryUI 1.7.2。 我需要让它与 jQueryUI 1.8.4 一起工作。来自阅读widget upgra
我有一个使用 jQueryUI 可排序的列表。 我需要根据插件的“更改”事件在拖动时跟踪元素的每一步。 但它只能从缓慢到正常的阻力可靠地工作。在这些速度下,没有任何错误。但是如果用户相对较快地拖动元素
当我重复滚动某个元素时 jQuery tooltip似乎在跳来跳去。我想也许是因为它与自身发生碰撞,所以我将碰撞选项设置为none,但这没有帮助。 这是一个错误吗?我怎样才能让它不跳来跳去? 最佳答案
如果返回的 json 对象如下所示,我有一个可以正常工作的 jQuery UI Autocomplete: label:name value:name 然后它会搜索 myname,当用户选择一个时,它
我是 JQueryUI 的新手,虽然我有一个对话框正在工作,但它没有以我认为指定的大小打开。为什么定义对话框时设置宽度和高度不会影响对话框的初始大小?如何将其设为 600 像素 x 500 像素? 这
我有一个简单的任务却让我抓狂。 我的 jQuery 代码: $(document).ready(function() { $("#dialog_open").butto
我正在使用 jQueryUI 1.8,它具有自动完成功能。 到目前为止,我已经成功地在多个领域实现了自动完成功能,如下所示: $(function() { $("#auto").autocom
我使用 UL 元素创建一个菜单,我使用 jQueryUI 来显示此菜单。 Edit Translation Edit Comment Edit Bind Edit R
我正在使用最新版本的 JqueryUI 自动完成(1.8.23)。我正在使用 autoFocus : true 属性,这给我带来了一个大问题。 当我开始在输入框中快速输入文本时,autoFocus :
问题: 当使用多个标准 jQueryUI 对话框实例化时,如下所示: $("#dialog").dialog({}); $("#dialog2").dialog({}); 如果有大量内容或设置了特定高
看看这个 jsfiddle 我试图将两个按钮并排放置,其中一个按钮是动态的,并且仅在发生特定事件时才会出现(在示例中是按下另一个按钮)。但在动画转换过程中,布局有点扭曲 $('.btn-toggle'
我有以下情况: 按钮打开一个包含复选框的模式对话框。当我单击此复选框时,我希望显示另一个模式对话框(警告),但我也想保留新的复选框状态(选中或未选中)。例如,如果复选框未选中并被单击,我希望显示警告并
我目前正在使用 jQuery UI 中的模态对话框作为菜单。该菜单由一些图像组成,单击这些图像时可用作菜单项。该站点使用动态 ajax 内容来加载所请求的页面。这是我的问题:单击图像后如何关闭模式对话
我正在处理 jqueryui 自动完成 JSONP 示例:http://jqueryui.com/demos/autocomplete/#remote-jsonp 即使在他们自己的演示中,我也设法让这
我正在使用 JQueryUI 对话框并在下面创建了此函数: $(document).ready(function() { $('#dialog').dialog({
我正在使用 jqueryui 自动完成来让我的文本框为用户显示各种选项。 在本例中,我只希望用户能够从列表中选择一个值,而不是输入另一个值。 我通过以下方式实现了这一点: $('#modelNo').
使用jQueryUI Autocomplete 我想将一些其他数据附加到框中的结果列表中。例如,我的数据集可能如下所示: [ { "name": "John's wild ba
尝试使用 jQueryUI 将表格列滑出 View ,然后再返回。遗憾的是,它似乎没有保留正确的列宽和位置,因此该列最终出现在错误的位置。 我遇到的问题的提炼版本在 http://jsfiddle.n
我是一名优秀的程序员,十分优秀!