How do I make a checkbox required on an ASP.NET form?
javascript function for client side validation (using jQuery)...
function CheckBoxRequired_ClientValidate(sender, e){ e.IsValid = jQuery(".AcceptedAgreement input:checkbox").is(':checked');}
code-behind for server side validation...
protected void CheckBoxRequired_ServerValidate(object sender, ServerValidateEventArgs e){ e.IsValid = MyCheckBox.Checked;}
ASP.Net code for the checkbox & validator...
<asp:CheckBox runat="server" ID="MyCheckBox" CssClass="AcceptedAgreement" /><asp:CustomValidator runat="server" ID="CheckBoxRequired" EnableClientScript="true" OnServerValidate="CheckBoxRequired_ServerValidate" ClientValidationFunction="CheckBoxRequired_ClientValidate">You must select this box to proceed.</asp:CustomValidator>
and finally, in your postback - whether from a button or whatever...
if (Page.IsValid){ // your code here...}
C# version of andrew's answer:
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Please accept the terms..." onservervalidate="CustomValidator1_ServerValidate"></asp:CustomValidator> <asp:CheckBox ID="CheckBox1" runat="server" />
Code-behind:
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args){ args.IsValid = CheckBox1.Checked;}
If you want a true validator that does not rely on jquery and handles server side validation as well ( and you should. server side validation is the most important part) then here is a control
public class RequiredCheckBoxValidator : System.Web.UI.WebControls.BaseValidator{ private System.Web.UI.WebControls.CheckBox _ctrlToValidate = null; protected System.Web.UI.WebControls.CheckBox CheckBoxToValidate { get { if (_ctrlToValidate == null) _ctrlToValidate = FindControl(this.ControlToValidate) as System.Web.UI.WebControls.CheckBox; return _ctrlToValidate; } } protected override bool ControlPropertiesValid() { if (this.ControlToValidate.Length == 0) throw new System.Web.HttpException(string.Format("The ControlToValidate property of '{0}' is required.", this.ID)); if (this.CheckBoxToValidate == null) throw new System.Web.HttpException(string.Format("This control can only validate CheckBox.")); return true; } protected override bool EvaluateIsValid() { return CheckBoxToValidate.Checked; } protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); if (this.Visible && this.Enabled) { System.Web.UI.ClientScriptManager cs = this.Page.ClientScript; if (this.DetermineRenderUplevel() && this.EnableClientScript) { cs.RegisterExpandoAttribute(this.ClientID, "evaluationfunction", "cb_verify", false); } if (!this.Page.ClientScript.IsClientScriptBlockRegistered(this.GetType().FullName)) { cs.RegisterClientScriptBlock(this.GetType(), this.GetType().FullName, GetClientSideScript()); } } } private string GetClientSideScript() { return @"<script language=""javascript"">function cb_verify(sender) {var cntrl = document.getElementById(sender.controltovalidate);return cntrl.checked;}</script>"; }}