使用 Javascript 测试选定的 asp 列表框项
Testing a selected asp Listbox item with Javascript
有一个带有列表项的ListBox1:
<asp:ListItem Value="No.1">No.1</asp:listitem>
并且有一个测试标签
<asp:Label ID="lblLabel" runat="server" Text="Label1" ></asp:Label>
现在我正在尝试使用 Javascript (jQuery) 测试当列表框留下制表符或输入符时是否选择了列表项 1,但这不起作用。这个javascript(jQuery)代码可能有什么问题?
$("#ListBox1").focusout(function () {
if ($("#ListBox1").SelectedItem.Text === "No.1") {
// tried also if ($("#ListBox1").val() === "No.1") {
$("#lblLabel").Text = $("#ListBox1").SelectedItem.Text;
}
});
最大的问题是服务器端 ASP.Net 表单控件 ID 在客户端上呈现为完全不同的内容。您可以这样做:
$("#<%=ListBox1.ClientID%>").focusout(function() { ... });
在我看来,这变得非常丑陋,所以我更喜欢使用类。您可以像这样定义控制标记:
<asp:Label ID="lblLabel" CssClass="obj_lblLabel" runat="server" Text="Label1" ></asp:Label>
这将允许您使用类选择器在客户端标识控件:
$(".obj_lblLabel").focusout(function() { ... });
您不一定需要 obj_
前缀,但这是我个人用来表示该类不用于样式目的的前缀。
此外,jQuery有一个change()
事件,它比focusout()
更适合使用。
最后,您应该避免主动 ASP.Net 表单开发。这是一个破碎的范式,行业正在迅速摆脱。ASP.Net MVC更容易使用,甚至可以更好地合并到您现有的项目中。请参阅此处:ASP.Net MVC 和 Web 窗体
这使用jQuery并使用focusout事件进行了修改,因此列表框仍然可以使用滚动键滚动。
$('#ListBox1').focusout(function () {
var data = $(this).val();
if (data == "No.1") {
//alert(data);
$('#myModal').modal('toggle');
}
$("#ListBox1").focus();
});
相关文章:
- 如何使用javascript将值引导下拉列表设置为隐藏值asp.net
- 经典asp中下拉列表中的选项值
- 将列表<字符串>转换为客户端 ASP.NET MVC 上的 Json 数组
- 用户控件内的 ASP 列表视图.如何在用户控件完全加载后触发 javascript
- jQuery 以选择 asp.net 中的下拉列表控件
- 禁用基于下拉列表选择 asp.net JavaScript 启用文本框
- 在 asp.net 中用javascript填充国家和城市下拉列表
- 如何使用 asp.net 中的另一个下拉列表更改下拉列表选定的索引和可见性
- asp.net 数据列表中的跟踪标签 ID
- 经典 ASP - 下拉列表:选择与第一个下拉列表具有相同值的所有下拉列表
- ASP.NET 显示单选按钮列表和下拉列表的进度条/加载
- 如何部分隐藏asp.net复选框列表项
- 使用 Javascript 测试选定的 asp 列表框项
- 在多选 asp 列表框(使用 jQuery 插件选定)中设置所选项
- 如何获取在 Javascript 中添加的 ASP 列表框控件的值
- 如何停止使用JavaScript或C#为ASP列表框启动SelectedIndexChanged
- 使用 jquery 从 asp 列表框中获取所选项的计数
- 从客户端脚本的ASP列表框中删除项目
- 如何阻止asp列表视图中的动态侧边栏崩溃?
- 在下拉菜单上为ASP列表项目运行警报