0

当我使用它时,我的下拉列表会在索引更改时触发代码,

$('#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>

我该如何解决这个问题?

4

3 回答 3

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');替换两个实例。bodyform

于 2013-05-09T13:36:54.943 回答
0

我不熟悉 jQuery blockUI,但是使用 jQuery Dialog,它会在显示时从表单中删除任何表单字段。因此,当表单被发回时,您无权访问它们。

使用 jQuery Dialog,您必须添加一些代码才能将字段添加回表单。我建议搜索一下 blockUI 是否有同样的问题。

于 2013-05-09T13:39:49.433 回答
-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)
{

}
于 2013-05-09T11:50:33.650 回答