当我使用它时,我的下拉列表触发了索引更改后面的代码,
$('#messagebox').show();
但在我使用时不会触发事件,
$.blockUI({message: $('#messagebox'), css: { width: '600px' } });
这是我的div标记,其中下拉列表显示为消息框
<div id="messagebox" style="display: none; cursor: default">
<asp:DropDownList ID="ddl" runat="server" EnableViewState="true" AutoPostBack="true" OnSelectedIndexChanged="ddl_SelectedIndexChanged"/>
</div>
我该如何解决这个问题?
答案 0 :(得分:1)
这很可能是因为blockUI将内容附加到正文而不是表单标记。如果事件位于表单标记之外,Asp.Net控件将不会发回事件,因此当使用javascript将元素附加到正文时,您会经常遇到它。你很可能不得不对BlockUI进行一些修改。
有关详细信息,请参阅此答案:https://stackoverflow.com/a/7929700/1346464。
修改强>
总结链接的答案(基于blockUI v2.59.0-2013.04.05,这是撰写本文时的最新内容):
在第319行(搜索var layers
)上,将$('body')
替换为$('form')
。
在第336行(搜索$('html,body').css('height','100%');
)上,将$('html,body')
替换为$('html,body,form')
。
编辑2:
修正解锁:
在第448行(搜索els = $('body').children().filter('.blockUI').add('body > .blockUI');
)将body
的两个实例替换为form
。
答案 1 :(得分:0)
我不熟悉jQuery blockUI,但是使用jQuery Dialog,它会在显示时从表单中删除任何表单字段。因此,当回发表单时,您无权访问它们。
使用jQuery Dialog,您必须添加一些代码才能将字段添加回表单。我建议搜索一下blockUI是否有同样的问题。
答案 2 :(得分:-3)
autopostbackproperty=true like below
<asp:DropDownList ID="ddlName" runat="server" AutoPostBack ="true"
onselectedindexchanged="ddlName_SelectedIndexChanged" >
</asp:DropDownList>
protected void ddlName_SelectedIndexChanged(object sender, EventArgs e)
{
}