- 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/
你能定义自动回发和回发吗?它们的区别,哪些Web服务器控件支持自动回发和回发,以及回发和回调之间的区别? 最佳答案 回发:页面向自身执行 POST 请求 autopostback:自动执行回发,例如当
我有一个 ASP.NET 表单,其中包含一个下拉列表,它会在更改时发回服务器,并用一些日期填充第二个下拉列表。 该表单还包含其他字段,其中一些字段在客户端进行验证,另一些字段在服务器端进行验证。 这是
我需要在我的 ASPX 页面中使用 JavaScript 确认函数来确认基于 C# 代码中条件的各种操作,而不是直接连接到按钮单击事件。例如。如果计算出记录数 > 200,则询问“你想继续吗?”然后根
我正在尝试为一个项目构建一个非常具体的搜索页面,但我在处理由单个页面上动态生成的控件调用的多个回发时遇到了很多麻烦。 页面必须像这样工作: 有一个复选框,“详细搜索”,会在选中/取消选中时引起回发。
在 React 组件中如何防止它回发,以便在按下提交按钮时页面不会重新加载。 组件代码如下: const class MyComponent extends React.Component { .
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: prevent postback of HtmlButton in C# 这是我的 JavaScript 函数:
我们有一个 ASP.NET MVC3 网络应用程序。我们生成 HTML5 页面。 现在,我们希望将拖放内容(图片、word文档...)发送到HTML5页面,然后发送到Web服务器在 C# 中处理(内容
我正在使用 jquery tab 并遵循 js 方法,如何以及如何修改它以在回发之间保持 tab 状态? (这会将选项卡重置为 page_load 后的第一个选项卡) $(document).read
我正在 ASP.NET 4.0 网站中使用 AjaxFileUpload。问题是,当我上传文件时,它的 UploadComplete 会触发,从而导致回发到页面。在由 AjaxFileUpload 引
我在表单上有三个单选按钮 - A、B、C。这些选择中的每一个都会使用特定于该选项的数据填充一个下拉列表。加载表单时,我将选项 A 设置为选中(默认)。 当我选择按钮 B 或 C 时,AsyncPost
我正在尝试使用 JQuery 阻止页面回发。 $(document).ready(function() { $('#').click(function() {
这个问题是一个更大页面的一部分,但我简化了代码以提供一个简单的示例来说明我正在谈论的内容。基本上我有一个带有 AutoPostBack="true"的 ASP 下拉列表,我想做一些 javascrip
我在页面上有一个 AJAX 请求。 有没有办法找到在页面上触发 AJAX 调用的时间。在 jQuery 或 javascript 中查找或发起一个函数,在页面上调用 AJAX 请求。 最佳答案 参见
我有一个按钮可以通过回发提交我的表单,我想进行一些评估,如果一切都不好显示错误消息并停止回发。我已设法让我的代码进入我的 onsubmit 函数,但无法停止回发。 表格: 功能: function
我正在混合使用 asp.net 网络表单和 asp.net-mvc。要使用我包含的网络表单 routes.IgnoreRoute("Reports/{*pathInfo}"); 在 public st
我的网页中有文本框,其中有RequiredFieldValidators。这些控件的最底部是按钮提交和清除每次我单击提交按钮时,它都会触发来自RequiredFieldValidators的验证,这很
我有一个用 jquery 做的键盘控制菜单(当我按下时,它标记第二个选项,依此类推...) 但是当我选择我需要的选项后,我想单击 Enter 来调用按钮的 OnClick 方法,就像用户真的单击了它一
我有一个表单,用于更新数据库中的一组现有信息。其中有一个选择框,当选择选项“B”时,它会显示一个隐藏部分,而在选项“A”上,它将隐藏该部分。这很好用。 但是,当我从数据库加载记录集并且选择框设置为选项
我有一个 asp.net 项目,我们称它们为对象。所有对象都在转发器中创建: '/>
我有一个 ModalPopup,它将包含一个 gridview 和 4 个用于将项目输入到 gridview 本身的字段。 是否可以在保持模式打开的同时回发到服务器并更新 gridview? 当您提交
我是一名优秀的程序员,十分优秀!