diff --git a/core/includes/form.inc b/core/includes/form.inc index 9ac42b3..43546e6 100644 --- a/core/includes/form.inc +++ b/core/includes/form.inc @@ -4048,7 +4048,9 @@ function form_validate_range(&$element, &$form_state) { } // Offset by the minimum. - form_set_value($element, $element['#min'] + $default_value, $form_state); + $element['#value'] = $element['#min'] + $default_value; + + form_set_value($element, $element['#value'], $form_state); } } diff --git a/core/modules/system/tests/form.test b/core/modules/system/tests/form.test index bc14bab..0cba105 100644 --- a/core/modules/system/tests/form.test +++ b/core/modules/system/tests/form.test @@ -374,6 +374,9 @@ class FormsTestCase extends DrupalWebTestCase { $this->assertEqual($values->float, 10.5); $this->assertEqual($values->integer, 6); $this->assertEqual($values->offset, 6.9); + + $this->drupalPost('form-test/range/invalid', array(), 'Submit'); + $this->assertFieldByXPath('//input[@type="range" and contains(@class, "error")]', NULL, 'Range element has the error class.'); } /** diff --git a/core/modules/system/tests/modules/form_test/form_test.module b/core/modules/system/tests/modules/form_test/form_test.module index e9687d2..fbe752d 100644 --- a/core/modules/system/tests/modules/form_test/form_test.module +++ b/core/modules/system/tests/modules/form_test/form_test.module @@ -151,6 +151,12 @@ function form_test_menu() { 'page arguments' => array('form_test_range'), 'access callback' => TRUE, ); + $items['form-test/range/invalid'] = array( + 'title' => 'Invalid range', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('form_test_range_invalid'), + 'access callback' => TRUE, + ); $items['form-test/checkboxes-radios'] = array( 'title' => t('Checkboxes, Radios'), 'page callback' => 'drupal_get_form', @@ -1337,6 +1343,26 @@ function form_test_range_submit($form, &$form_state) { } /** + * Form constructor for testing invalid #type 'range' elements. + * + * @ingroup forms + */ +function form_test_range_invalid($form, &$form_state) { + $form['minmax'] = array( + '#type' => 'range', + '#min' => 10, + '#max' => 5, + '#title' => 'Invalid range', + '#description' => 'Minimum greater than maximum.', + ); + $form['submit'] = array( + '#type' => 'submit', + '#value' => 'Submit', + ); + return $form; +} + +/** * Builds a form to test the placeholder attribute. */ function form_test_placeholder_test($form, &$form_state) {