We’re using cookies, but you can turn them off in Privacy Settings. Otherwise, you are agreeing to our use of cookies. Accepting cookies does not mean that we are collecting personal data. Learn more in our Privacy Policy .

Validation

Form Validation

Indicates a required field

Validation
Day
Month
Year
Which best describes your current employment status?
Color Options
Select a color option

HTML

<form action="javascript:void(0)">
    <div class="field-group-message alert media error-summary" role="alert">
        <div class="media-left"><span class="cfaicon-hazardous white" aria-hidden="true"></span></div>
        <div class="media-body" id="errorSummary">
            <ul class="list-unstyled">
            <li class="error-item">This field is required.<a aria-label="This field is required. Edit" href="#passport-number">Edit</a></li>
            <li class="error-item">This field is required.<a aria-label="This field is required. Edit" href="#passport-validation-day">Edit</a></li>
            <li class="error-item">Month is a required field.<a aria-label="Month is a required field. Edit" href="#passport-validation-month">Edit</a></li>
            <li class="error-item">Year is a required field.<a aria-label="Year is a required field. Edit" href="#passport-validation-year">Edit</a></li>
            <li class="error-item">Employment Status is a required field.<a aria-label="Employment Status is a required field. Edit" href="#Employed">Edit</a></li>
            <li class="error-item">Please select at least one color.<a aria-label="Please select at least one color. Edit" href="#red">Edit</a></li>
            </ul>
        </div>
    </div>
    <fieldset class="error-summary-before">
        <legend> Validation </legend>
        <div class="form-group form-inline">
            <label class="control-label required" for="passport-number"> Last four characters of passport number</label>
            <input id="passport-number"
                    class="form-control"
                    type="text"
                    name="passportNumber"
                    aria-required="true"
                    data-val="true"
                    data-val-required="Last four characters of passport number is a required field."
                    data-val-length="Please enter last four characters of passport number."
                    data-val-length-min="4"
                    data-val-length-max="8"
                    data-rule-nowhitespace="true"
                    required="required" />
        </div>

        <div class="form-group form-inline">
            <label class="control-label required" for="PersonId">CFA Institute ID (.NET 6)</label>
            <input
                class="form-control"
                data-val-length="CFA Institute ID should be between 2 and 10 characters"
                data-val-regex="CFA Institute ID should be a number." 
                data-val-required="CFA Institute ID is a required field." 
                data-val-length-max="10"
                data-val-length-min="2"
                data-val-regex-pattern="^\s*[0-9]+\s*$" 
                id="PersonId"
                name="PersonId"
                type="text"
                value=""
                required="required"
                aria-required="true"
            />
        </div>

        <div class="form-group form-inline">
            <label class="control-label required" for="PersonIdLegacy">CFA Institute ID (Legacy)</label>
            <input
                class="form-control"
                data-msg-maxlength="CFA Institute ID should be 10 characters or less." 
                data-msg-pattern="CFA Institute ID should be a number."
                data-msg-required="CFA Institute ID is a required field."
                data-rule-maxlength="10"
                data-rule-pattern="^\s*[0-9]+\s*$"
                data-rule-required="true"
                id="PersonIdLegacy"
                name="PersonIdLegacy"
                type="text"
                value=""
                aria-required="true"
                autocomplete="off"
                required="required"
            />
        </div>

        <div class="form-group form-inline row validation-input-container">
            <label id="passport-validation"
                class="control-label required"
                for="passport-validation-day">
                Passport Expiration Date
            </label>
            <div class="col-sm-4 col-md-2">
                <span id="passport-validation-day-help-block" class="help-block">Day</span>
                <input id="passport-validation-day"
                        class="form-control"
                        type="text"
                        name="passportDay"
                        data-val="true"
                        data-val-required="Day is a required field."
                        data-val-range="Please enter a valid Day."
                        data-val-range-min="1"
                        data-val-range-max="31"
                        data-val-number="Day should be a number."
                        placeholder="3"
                        aria-describedby="passport-validation-day-help-block"
                        aria-labelledby="passport-validation"
                        aria-required="true"
                        required="required" />
            </div>
            <div class="col-sm-4 col-md-3">
                <span id="passport-validation-month-help-block" class="help-block">Month</span>
                <select id="passport-validation-month"
                        class="form-control"
                        name="passportMonth"
                        role="combobox"
                        data-val="true"
                        data-val-number="The field Month must be a number."
                        data-val-required="Month is a required field."
                        data-val-range="Please enter a valid Manth."
                        data-val-range-min="1"
                        data-val-range-max="12"
                        data-msg-required="Month is a required field."
                        aria-describedby="passport-validation-month-help-block"
                        aria-labelledby="passport-validation"
                        aria-required="true"
                        required="required">
                    <option value=""></option>
                    <option value="1">January</option>
                    <option value="2">February</option>
                    <option value="3">March</option>
                    <option value="4">April</option>
                    <option value="5">May</option>
                    <option value="6">June</option>
                    <option value="7">July</option>
                    <option value="8">August</option>
                    <option value="9">September</option>
                    <option value="10">October</option>
                    <option value="11">November</option>
                    <option value="12">December</option>
                </select>
            </div>
            <div class="col-sm-4 col-md-2">
                <span id="passport-validation-year-help-block" class="help-block">Year</span>
                <input id="passport-validation-year"
                        class="form-control"
                        name="passportYear"
                        type="text"
                        data-val="true"
                        data-msg-max="Year must be lower than 2027."
                        data-msg-min="Year must be grater than 2023."
                        data-msg-number="The field Year must be a number."
                        data-msg-required="Year is a required field."
                        data-rule-max="2027"
                        data-rule-min="2023"
                        data-rule-number="true"
                        data-rule-required="true"
                        placeholder="2027"
                        aria-describedby="passport-validation-year-help-block"
                        aria-labelledby="passport-validation"
                        aria-required="true"
                        required="required" />
            </div>
        </div>

        <div class="form-group form-inline">
            <label class="control-label required" for="resident-id">
                Chinese Resident ID
            </label>
            <input id="resident-id"
                class="form-control"
                type="text"
                name="residentId"
                aria-required="true"
                data-val="true"
                data-val-required="Resident ID is a required field."
                data-val-regex="Chinese Resident ID Number (居民身份证) characters 1 thru 17 must be numerals. Character 18 can be alphanumeric."
                data-val-regex-pattern="^\d{17}[\d\w]$"
                data-rule-nowhitespace="true"
                required="required" />
        </div>

        <div class="form-group validation-input-container">
            <label id="professionalInformationLabel" class="control-label required">Professional Information</label>
            <span id="professionalInformationHelpBlock" class="help-block">Which best describes your current employment status?</span>
            <div class="radio">
                <label for="Employed">
                    <input data-msg-required="Employment Status is a required field."
                            data-rule-required="true"
                            required="required"
                            aria-required="true"
                            id="Employed" 
                            name="Status" 
                            type="radio" 
                            value="Employed"
                            aria-labelledby="professionalInformationLabel"
                            aria-describedby="professionalInformationHelpBlock" />
                    <span class="radio-label">Employed</span>
                </label>
            </div>
            <div class="radio">
                <label for="Self-employed">
                    <input data-msg-required="Employment Status is a required field."
                            data-rule-required="true"
                            required="required"
                            aria-required="true"
                            id="Self-employed" 
                            name="Status" 
                            type="radio" 
                            value="Self-employed"
                            aria-labelledby="professionalInformationLabel"
                            aria-describedby="professionalInformationHelpBlock" />
                    <span class="radio-label">Self-employed</span>
                </label>
            </div>
            <div class="radio">
                <label for="Student">
                    <input data-msg-required="Employment Status is a required field."
                            data-rule-required="true"
                            required="required"
                            aria-required="true"
                            id="Student" 
                            name="Status" 
                            type="radio" 
                            value="Student"
                            aria-labelledby="professionalInformationLabel"
                            aria-describedby="professionalInformationHelpBlock" />
                    <span class="radio-label">Student</span>
                </label>
            </div>
            <div class="radio">
                <label for="Unemployed">
                    <input data-msg-required="Employment Status is a required field."
                            data-rule-required="true"
                            required="required"
                            aria-required="true"
                            id="Unemployed" 
                            name="Status" 
                            type="radio" 
                            value="Unemployed"
                            aria-labelledby="professionalInformationLabel"
                            aria-describedby="professionalInformationHelpBlock" />
                    <span class="radio-label">Unemployed</span>
                </label>
            </div>
            <div class="radio">
                <label for="Retired">
                    <input data-msg-required="Employment Status is a required field."
                            data-rule-required="true"
                            required="required"
                            aria-required="true"
                            id="Retired" 
                            name="Status" 
                            type="radio" 
                            value="Retired"
                            aria-labelledby="professionalInformationLabel"
                            aria-describedby="professionalInformationHelpBlock" />
                    <span class="radio-label">Retired</span>
                </label>
            </div>
        </div>

        <div class="form-group validation-input-container">
            <div id="checkboxColorLabel" class="control-label required">Color Options</div>
            <span id="checkboxColorHelpBlock" class="help-block">Select a color option</span>
            <div class="checkbox">
                <label for="red">
                    <input id="red" 
                            type="checkbox" 
                            value=""
                            data-rule-required="true"
                            data-val="true"
                            data-msg-required="Please select at least one color."
                            aria-required="true"
                            name="color" 
                            aria-labelledby="checkboxColorLabel" 
                            aria-describedby="checkboxColorHelpBlock" />
                    <span class="checkbox-label">Red</span>
                </label>
            </div>
            <div class="checkbox">
                <label for="green">
                    <input id="green" 
                            type="checkbox" 
                            value=""
                            data-rule-required="true"
                            data-val="true"
                            data-msg-required="Please select at least one color."
                            aria-required="true"
                            name="color" 
                            aria-labelledby="checkboxColorLabel" 
                            aria-describedby="checkboxColorHelpBlock" />
                    <span class="checkbox-label">Green</span>
                </label>
            </div>
            <div class="checkbox">
                <label for="blue">
                    <input id="blue" 
                            type="checkbox" 
                            value=""
                            data-rule-required="true"
                            data-val="true"
                            data-msg-required="Please select at least one color."
                            aria-required="true"
                            name="color" 
                            aria-labelledby="checkboxColorLabel" 
                            aria-describedby="checkboxColorHelpBlock" />
                    <span class="checkbox-label">Blue</span>
                </label>
            </div>
            <div class="checkbox">
                <label for="orange">
                    <input id="orange" 
                            type="checkbox" 
                            value=""
                            data-rule-required="true"
                            data-val="true"
                            data-msg-required="Please select at least one color."
                            aria-required="true"
                            name="color" 
                            aria-labelledby="checkboxColorLabel" 
                            aria-describedby="checkboxColorHelpBlock" />
                    <span class="checkbox-label">Orange</span>
                </label>
            </div>
        </div>
    </fieldset>
    <button>Validate form</button>
</form>

Problem Being Solved

Users need to know how to correct form errors.

When to Use

  • Validation should be used on all fields that require a value. Validation should also be used for fields that require data to be entered in a specific format (e.g., email address) when the input is not dictated by the control type.
  • Note that the pattern consists of both field-level messaging and an error box at the top of the page with jumplinks to the field. This approach supports screenreaders.

When Not to Use

Validation is not necessary if a field is optional and doesn’t require a specific data format.

Formatting

We use the jquery Validation plugin for front end validation, with some customizations for certain fields. See https://jqueryvalidation.org/

Added support of aspnetcore/Mvc. validation attributes.