
turretcss 
turretcss is not much different from many frameworks, but still, let's break down an example:
html
<form>
  <p class="field">
    <label>Name</label>
    <input type="text" name="name" value="" />
    <p class="form-message error"></p>
  </p>
  <p class="field">
    <label>Email</label>
    <input type="email" name="email" value="" />
    <p class="form-message error">[[+fi.error.email]]</p>
  </p>
  <p class="field">
    <button type="submit" class="button">Submit</button>
    <button type="reset" class="button">Reset</button>
  </p>
</form>To prepare, you will need to do the following:
- Add data-error="*"attributes for elements that will be displayed with the error text.
- For FormIt compatibility, placeholders with values and errors must be specified.
- In turretcss, invalid status is specified by the errorclass, so we specify it in thefetchit.frontend.input.invalid.classsystem setting.
INFO
Markup validators still swear by the empty action attribute, so you must specify a link to the page in it.
modx
<form> 
<form action="[[~[[*id]]]]" method="post"> 
  <p class="field">
    <label>Name</label>
    <input type="text" name="name" value="" /> 
    <input type="text" name="name" value="[[+fi.name]]" /> 
    <p class="form-message error"></p> 
    <p class="form-message error" data-error="name">[[+fi.error.name]]</p> 
  </p>
  <p class="field">
    <label>Email</label>
    <input type="email" name="email" value="" /> 
    <input type="email" name="email" value="[[+fi.email]]" /> 
    <p class="form-message error"></p> 
    <p class="form-message error" data-error="email">[[+fi.error.email]]</p> 
  </p>
  <p class="field">
    <button type="submit" class="button">Submit</button>
    <button type="reset" class="button">Reset</button>
  </p>
</form>