An error summary can be shown at the top of the form.
<style>
/* Styles for visual demo only. Ordinarily these styles would be applied by a validation script. */
.mzp-c-newsletter .mzp-c-form-errors,
.mzp-c-newsletter .mzp-c-newsletter-details {
display: block;
}
</style>
<aside class="mzp-c-newsletter">
<div class="mzp-c-newsletter-image">
<img src="../../img/newsletter-image.png" width="346" height="346" alt="">
</div>
<form id="newsletter-form" class="mzp-c-newsletter-form" name="newsletter-form" action="#" method="">
<header class="mzp-c-newsletter-header">
<h3 class="mzp-c-newsletter-title">Love the Web?</h3>
<p class="mzp-c-newsletter-tagline">Get the Mozilla newsletter and help us keep it open and free.</p>
</header>
<fieldset class="mzp-c-newsletter-content">
<div class="mzp-c-form-errors" id="newsletter-errors">
<ul class="mzp-u-list-styled">
<li>Please enter a valid email address.</li>
<li>You must agree to the privacy notice.</li>
</ul>
</div>
<div>
<label for="email">Your email address</label>
<input type="email" class="mzp-js-email-field" id="email" name="email" placeholder="yourname@example.com" required aria-required="true" value="not-an-email">
</div>
<div id="newsletter-details" class="mzp-c-newsletter-details">
<label for="">Country</label>
<select name="country" id="">
<option value="DE">Germany</option>
<option value="FR">France</option>
<option value="IN">India</option>
<option value="JP">Japan</option>
<option value="ES">Spain</option>
<option value="US">United States</option>
<option value="">And so on…</option>
</select>
<label for="language">Language</label>
<select name="language" id="language">
<option value="de">Deutsch</option>
<option value="en">English</option>
<option value="es">Español</option>
<option value="fr">Français</option>
<option value="hi-IN">हिन्दी (भारत)</option>
<option value="ja">日本語</option>
</select>
<fieldset class="mzp-u-inline">
<legend>Format</legend>
<p>
<label for="format-html" class="mzp-u-inline">
<input type="radio" id="format-html" name="fmt" value="H" checked> HTML
</label>
<label for="format-text" class="mzp-u-inline">
<input type="radio" id="format-text" name="fmt" value="T"> Text
</label>
</p>
</fieldset>
<p>
<label for="privacy" class="mzp-u-inline">
<input type="checkbox" id="privacy" name="privacy" required aria-required="true">
I’m okay with Mozilla handling my info as explained in <a href="https://www.mozilla.org/privacy/websites/">this Privacy Notice</a>
</label>
</p>
</div>
<p class="mzp-c-form-submit">
<button type="submit" class="mzp-c-button" id="newsletter-submit">Sign up now</button>
<span class="mzp-c-fieldnote">We will only send you Mozilla-related information.</span>
</p>
</fieldset>
</form>
<div id="newsletter-thanks" class="mzp-c-newsletter-thanks">
<h3>Thanks!</h3>
<p>If you haven’t previously confirmed a subscription to a Mozilla-related newsletter you may have to do so. Please check your inbox or your spam filter for an email from us.</p>
</div>
</aside>
<script src="../../protocol/js/newsletter.js"></script>