Question

When a drupal form fails validation, it is redrawn with the elements that failed validation surrounded in a red border. Drupal does this by adding the error class to the input elements, and specifing a 2px red border on input.error elements in system.css.

Without modifying this stylesheet, how can I remove the red border on a specific form only, while using the default behavior on the rest of the site?

I believe the solution might require using a custom theme_form_element, but I can't figure out how to customize a single form only.

Note that I would like to do this without having to resort to this jQuery trick (which does work):

$("#edit-name").removeClass('error');
Was it helpful?

Solution

You will need to remove the error class from the form items. This can be done by overwriting the theme functions, in theme_textfield, theme_textarea ... (there is one for each type)

Take a look at $element['#attributes']['class'] which contains the error class.

EDIT
To do it for a specific form element or form you can use the #theme attribute or either form or element you want to change the theming function for.

OTHER TIPS

The easiest way is not to try to modify the markup Drupal is spotting out, but instead to change the styles assocaited with the error class.

You can do that without modifying system.css. Simply add a new stylesheet in your theme (or using an existing one!). Use the Cascading nature of CSS to change the way elements with errors appear. Add something like:

.error {
  border: 0;
}

... and you are done.

To target only one specific form, add another selector, like so:

#my-specific-form .error {
  border: 0;
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top