我如何对表单下拉列表的 'onchange' 和 'aspx state' 信息作出反应?
How can I react to 'onchange' and 'aspx state' information for a form dropdown?
当我有一个对 onchange
事件作出反应的下拉菜单时,我正在寻找一种在我看来是处理页面刷新的简单模式。
我在后面的 vb 代码中(在 Load
处理程序中)使用了以下代码:
MyDropDown.Attributes.Add("onchange", "ProcessDDChange(this.value);")
函数 ProcessDDChange()
位于页内 JavaScript,它使某些下拉列表的某些值的其他表单输入变灰。
这工作正常,但在 post 返回后,onchange
显然不会在恢复以前的状态时触发,因此禁用的框会再次启用。
我已经调查了 load
事件(页面和下拉菜单),但两者都触发得太早而无法使用,我看不到任何后续选项。
有标准的方法吗?我需要一个挂钩 运行 一个 js 函数 post DOM 设置,post asp 状态恢复。
信息
我正在使用 .net 3.5,并且正在寻找跨浏览器解决方案。这不是我的项目,所以我无法添加 jQuery(尽管我很想添加)或其他库。
onchange 不会在页面加载时触发。您需要在页面加载时触发该功能,或者您需要让服务器从一开始就正确设置页面。
您可以将下拉菜单包装在更新面板中,并像 epascarello 建议的那样设置更改事件的触发器。您是否尝试过将其添加到
之类的标记中
<asp:DropDownList runat="server" ID="MyDropDown" onchange="ProcessDDChange(this.value);"></asp:DropDownList>
编辑:
所以你在回发时丢失了 onchange 监听器,上面的例子应该保留它。但如果没有,您也可以在您想调用 ProcessDDChange: for vb.net
的代码隐藏事件中尝试此操作
ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), "err", "ProcessDDChange(this.value);", true);
最终编辑:
感谢鲍勃在我试图理解这个问题时坚持不懈:
document.ready 事件在 PageLoad 事件完成并构造 DOM 之后引发。这是调用 ProcessDDChange() 的合适位置。
document.addEventListener("DOMContentLoaded", function(event) {
ProcessDDChange(ddlId.selectedValue);
});
当我有一个对 onchange
事件作出反应的下拉菜单时,我正在寻找一种在我看来是处理页面刷新的简单模式。
我在后面的 vb 代码中(在 Load
处理程序中)使用了以下代码:
MyDropDown.Attributes.Add("onchange", "ProcessDDChange(this.value);")
函数 ProcessDDChange()
位于页内 JavaScript,它使某些下拉列表的某些值的其他表单输入变灰。
这工作正常,但在 post 返回后,onchange
显然不会在恢复以前的状态时触发,因此禁用的框会再次启用。
我已经调查了 load
事件(页面和下拉菜单),但两者都触发得太早而无法使用,我看不到任何后续选项。
有标准的方法吗?我需要一个挂钩 运行 一个 js 函数 post DOM 设置,post asp 状态恢复。
信息
我正在使用 .net 3.5,并且正在寻找跨浏览器解决方案。这不是我的项目,所以我无法添加 jQuery(尽管我很想添加)或其他库。
onchange 不会在页面加载时触发。您需要在页面加载时触发该功能,或者您需要让服务器从一开始就正确设置页面。
您可以将下拉菜单包装在更新面板中,并像 epascarello 建议的那样设置更改事件的触发器。您是否尝试过将其添加到
之类的标记中 <asp:DropDownList runat="server" ID="MyDropDown" onchange="ProcessDDChange(this.value);"></asp:DropDownList>
编辑:
所以你在回发时丢失了 onchange 监听器,上面的例子应该保留它。但如果没有,您也可以在您想调用 ProcessDDChange: for vb.net
的代码隐藏事件中尝试此操作 ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), "err", "ProcessDDChange(this.value);", true);
最终编辑:
感谢鲍勃在我试图理解这个问题时坚持不懈: document.ready 事件在 PageLoad 事件完成并构造 DOM 之后引发。这是调用 ProcessDDChange() 的合适位置。
document.addEventListener("DOMContentLoaded", function(event) {
ProcessDDChange(ddlId.selectedValue);
});