ASP.NET/VB.NET:Dropdownlist SelectedIndexChanged未使用onchange=
ASP.NET/VB.NET: Dropdownlist SelectedIndexChanged not firing with onchange="javascript:return true;"
我有以下标记:
<asp:DropDownList ID="dd1" AutoPostBack="true" runat="server">
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="dd2" AutoPostBack="true" onchange="javascript:return true;" runat="server">
<asp:ListItem Value="1">3</asp:ListItem>
<asp:ListItem Value="2">4</asp:ListItem>
</asp:DropDownList>
连接到此:
Protected Sub changed1(sender As Object, e As EventArgs) Handles dd1.SelectedIndexChanged
End Sub
Protected Sub changed2(sender As Object, e As EventArgs) Handles dd2.SelectedIndexChanged
End Sub
当dd2的索引被更改时,你会期望它的处理程序被触发,对吧?事实并非如此。相反,它会被"排队",并在dd1的处理程序在其索引更改时激发后被激发。如果你把onchange="javascript:return true;"
从dd2上取下来,它就会很好地发射。
有人知道这里发生了什么吗?
编辑:我的第一个答案是,在下拉列表中使用返回表达式与按钮的单击事件不一样,但我发誓我以前对下拉列表也这样做过。
更新:我可以通过在Javascript:中执行此操作来强制启动服务器事件
__doPostBack("<%=dd2.ClientID %>", '');
我不明白为什么我必须这样做,但它是有效的。然而,我仍然想用另一种方式,所以如果有人知道,请让我知道,这样我就可以把你标记为答案。
您根本不需要它。只需将AutoPostBack
设置为true,如果需要转义验证,则将CausesValidation
设置为false。
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" CausesValidation="false" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" />
出于某种原因,我认为可以通过在客户端的onchange事件上返回false来取消下拉列表的服务器事件,就像在按钮的onclick事件(例如onclick="javascript:return false;"
(中一样。
我最终要做的是检查函数中的一个条件。如果是真的,它会触发这个:
__doPostBack("<%=dd2.ClientID%>",''(;
否则,它不会。
<asp:DropDownList ID="page_size" runat="server" **AutoPostBack="true"** OnSelectedIndexChanged="page_size_SelectedIndexChanged">
</asp:DropDownList>
添加Autopostback="true
对我有好处。
__doPostBack("<%=dd2.ClientID %>", '');
这对我有效。
这是我的下拉菜单:
<asp:DropDownList ID="ddlbranchname" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlBranchChanged"
onchange="return CheckDate();" CausesValidation="false" CssClass="dropdown">
</asp:DropDownList>
这是我的jquery函数:
function CheckDate() {
var date = document.getElementById('<%= ucDateTimeStart.FindControl("txtDateTime").ClientID %>').value;
if (date == '') {
alert("Please select a valid date.");
return false;
}
else {
__doPostBack("<%=ddlbranchname.ClientID %>", '');
return true;
}
return true;
}
相关文章:
- $rootScope未使用forEach进行更新
- 无法在现有状态转换期间更新-未使用任何非法的setState()
- 角度控制器未使用OcLazyLoad和ngRoute加载
- 绑定到 x 可编辑的成功函数未使用正确的参数执行
- 如何在ASP.Net中使用ES6功能
- 使用jQuery将单击绑定到页面中未使用的部分
- 未使用Javascript在IE中设置Cookie
- Ionic:AngularJS变量未使用$scope更新DOM
- 元素未使用当前玩家操作进行更新
- 将方法从控制器注入到未使用右变量调用的指令
- LinkedIn共享链接图片未使用自定义url更新
- 地图视图未使用PhoneGap加载
- 组件未使用ReactJS和React Router进行渲染
- 表单未使用 MVC 提交任何值 Asp.Net
- 短信未使用Branch.io和intl tel输入发送到intl号码
- 表列未使用tablesorter插件进行排序
- placeHolder id未使用style.display显示
- 必应地图未使用 asp.net MVC 显示位置
- ASP.NET / VS2010 查找项目中未使用的文件
- ASP.NET/VB.NET:Dropdownlist SelectedIndexChanged未使用onchange=