views:

177

answers:

1

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');
+1  A: 

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.

googletorp
Can this be done inside of a module? I seem to be having some trouble getting it to work.
Rob Crowell
Do it in your theme.
googletorp
Your method works (putting it in the theme), but it modifies all forms on my site instead of just a specific one. I think I will stick with my jQuery solution for now, even though I don't like it. Thanks for your help though!
Rob Crowell

related questions