summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/form.inc2
-rw-r--r--modules/simpletest/tests/form.test11
2 files changed, 12 insertions, 1 deletions
diff --git a/includes/form.inc b/includes/form.inc
index 969d8d2e0..8ae8065a2 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -4167,7 +4167,7 @@ function _form_set_class(&$element, $class = array()) {
if (!empty($element['#required'])) {
$element['#attributes']['class'][] = 'required';
}
- if (isset($element['#parents']) && form_get_error($element) !== NULL) {
+ if (isset($element['#parents']) && form_get_error($element) !== NULL && !empty($element['#validated'])) {
$element['#attributes']['class'][] = 'error';
}
}
diff --git a/modules/simpletest/tests/form.test b/modules/simpletest/tests/form.test
index 7eac198ad..7c44b1bed 100644
--- a/modules/simpletest/tests/form.test
+++ b/modules/simpletest/tests/form.test
@@ -657,6 +657,17 @@ class FormValidationTestCase extends DrupalWebTestCase {
$this->assertText(t('!name field is required.', array('!name' => 'Title')));
$this->assertText('Test element is invalid');
}
+
+ /**
+ * Tests error border of multiple fields with same name in a page.
+ */
+ function testMultiFormSameNameErrorClass() {
+ $this->drupalGet('form-test/double-form');
+ $edit = array();
+ $this->drupalPost(NULL, $edit, t('Save'));
+ $this->assertFieldByXpath('//input[@id="edit-name" and contains(@class, "error")]', NULL, 'Error input form element class found for first element.');
+ $this->assertNoFieldByXpath('//input[@id="edit-name--2" and contains(@class, "error")]', NULL, 'No error input form element class found for second element.');
+ }
}
/**