我正在使用 .NET 4 和 JQuery 根据从 DDL 中选择的内容来显示/隐藏 Div。当我手动单击下拉菜单时,Jquery 将按预期触发并显示/隐藏字段。但是,当我以编程方式更改 DDL 的 selectedValue 时,Jquery 根本不会触发。我有一个 ddl,有两个选项:单个选项和重复选项,并且我显示选定的 div 并保持另一个隐藏。
$(document).ready(function () {
$("#MainContent_ddlScheduleType").change(function () {
$('#Single').hide();
$('#Recurring').hide();
var newSelection = "#" + this.value;
$(newSelection).fadeIn('slow');
});
});
实际页面内部有两个下拉字段,第一个是数据库表中当前所有作业的列表。这些作业运行一次或多次(单次、重复)。用户从第一个下拉列表中选择作业的名称。存储过程从数据库中提取该作业的信息并将其存储在客户端变量中。然后,我比较该客户端变量来决定是否应该更改下拉列表。这是完成大部分工作的事件处理程序。综上所述,当您从第一个下拉列表中选择作业时,第二个下拉列表应该更改以反射(reflect)它是重复的还是单个的(这成功发生!),但 Jquery 实际上并不显示相应的单个/重复 Div它应该显示。
protected void ddlJobList_SelectedIndexChanged(object sender, EventArgs e)
{
string Frequency = null;
SqlParameter sqlParameter = new SqlParameter("@JobName", ddlJobList.SelectedItem.Text);
DataTable dt = SqlHelper.GetDataTable("zzGetJobInformation", CommandType.StoredProcedure, sqlParameter);
if (!(dt.Rows[0]["Frequency"] is DBNull))
Frequency = dt.Rows[0]["Frequency"].ToString();
if (Frequency == null)
ddlScheduleType.SelectedValue = "Single";
else
ddlScheduleType.SelectedValue = "Recurring";
}
有什么原因不会导致 Jquery 触发?
我看这里: jQuery drop down list change event not fire
虽然我没有使用MVC,但我以前用过,所以我可以关联看起来与我非常相似的代码。不幸的是,“解决方案”的链接不再有效,他们的答案也不是很具有描述性。我可以肯定地说,firebug 中没有报告控制台/javascript 错误。
最佳答案
好的,这解释得更好一些。困惑来自于混合服务器和客户端代码。我建议使用其中之一来管理下拉列表和影响,而不是同时使用两者。
同时使用这两种方法意味着您必须处理回发、Webforms 事件并维护客户端 (jquery) 和服务器 (.net) 上的状态,这很困惑。
我要么使用 Webforms 来管理 UI 的状态,要么使用 jquery 和 ajax 请求与页面方法、asmx 或其他类型的 asp.net 处理程序来管理 UI 的状态。
关于c# - Jquery ddl更改事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8577228/