Lor*_*zoC 2 javascript c# asp.net jquery listbox
我想在 中选择多个项目ListBox,但浏览器要求用户按 CTRL 选择多个项目,否则它只选择一个项目。
我想在不按 CTRL 的情况下选择多个项目,并且我不想使用CheckBoxList. 有没有更好的方法来做到这一点?使用纯 javascript、JQuery 或 Codebehind。
(我已经SelectionMode="Multiple"为ListBox控件添加了属性)
代码:
<asp:ListBox ID="ListBox1" runat="server" Height="210px" Width="203px" SelectionMode="Multiple">
<asp:ListItem>1000</asp:ListItem>
<asp:ListItem>2000</asp:ListItem>
<asp:ListItem>4000</asp:ListItem>
<asp:ListItem>4000</asp:ListItem>
<asp:ListItem>5000</asp:ListItem>
<asp:ListItem>6000</asp:ListItem>
</asp:ListBox>
Run Code Online (Sandbox Code Playgroud)
参考:使标准的 ASP.NET 列表框在不按住 Ctrl 的情况下进行多选
只需将您的列表框更改为
<asp:ListBox ID="ListBox1" runat="server" Height="210px" Width="203px" SelectionMode="Multiple" onclick="ListBoxClient_SelectionChanged(this, event);">
<asp:ListItem>1000</asp:ListItem>
<asp:ListItem>2000</asp:ListItem>
<asp:ListItem>4000</asp:ListItem>
<asp:ListItem>4000</asp:ListItem>
<asp:ListItem>5000</asp:ListItem>
<asp:ListItem>6000</asp:ListItem>
</asp:ListBox>
Run Code Online (Sandbox Code Playgroud)
并在您的<script>标签中添加以下脚本
<script type="text/javascript" language="javascript">
var selectedClientPermissions = [];
function pageLoad() {
var ListBox1 = document.getElementById("<%= ListBox1.ClientID %>");
for (var i = 0; i < ListBox1.length; i++) {
selectedClientPermissions[i] = ListBox1.options[i].selected;
}
}
function ListBoxClient_SelectionChanged(sender, args) {
var scrollPosition = sender.scrollTop;
for (var i = 0; i < sender.length; i++) {
if (sender.options[i].selected) selectedClientPermissions[i] = !selectedClientPermissions[i];
sender.options[i].selected = selectedClientPermissions[i] === true;
}
sender.scrollTop = scrollPosition;
}
</script>
Run Code Online (Sandbox Code Playgroud)