How do I make a checkbox required on an ASP.NET form? How do I make a checkbox required on an ASP.NET form? asp.net asp.net

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>";    }}