【发布时间】:2011-01-26 18:45:35
【问题描述】:
如何限制用户在按钮单击事件中选择不超过 10 个 asp.net 复选框,如果用户选择超过 10 个复选框,则会弹出警告框,您不能选择超过 10 个复选框?
【问题讨论】:
标签: asp.net vb.net visual-studio-2008
如何限制用户在按钮单击事件中选择不超过 10 个 asp.net 复选框,如果用户选择超过 10 个复选框,则会弹出警告框,您不能选择超过 10 个复选框?
【问题讨论】:
标签: asp.net vb.net visual-studio-2008
如果页面上的复选框不多,则为该复选框创建一个onlcick javascript函数,并循环遍历所有复选框,看看是否选中了10个以上。
如果您的页面上有很多复选框,则在单击复选框时增加一个变量,并在未选中时减少它。您将始终拥有可以检查以显示警报的计数。
【讨论】:
您可以使用CustomValidator 并实现其ServerValidate 事件(也可以选择通过其ClientValidationFunction 在客户端上执行相同的操作)。
可能是这样的(如果您使用的是 jQuery):
<asp:CheckBoxList ID="Checkboxes" runat="server" />
<asp:CustomValidator ID="CheckboxValidator" runat="server" Display="None" ClientValidationFunction="CheckboxValidator_ClientValidate" OnServerValidate="CheckboxValidator_ServerValidate" ErrorMessage="Too many selections" />
<asp:ValidationSummary runat="server" />
<script type="text/javascript">
function CheckboxValidator_ClientValidate(sender, args) {
args.IsValid = jQuery('#<%=Checkboxes.ClientID%> input:checked').length < <%= MaximumSelections %>;
}
</script>
protected const int MaximumSelections = 10;
protected void CheckboxValidator_ServerValidate(object sender, ServerValidateEventArgs args)
{
args.IsValid = Checkboxes.Items.Cast<ListItem>().Where(i => i.Selected).Count() < MaximumSelections;
}
【讨论】: