diff -u b/core/includes/form.inc b/core/includes/form.inc --- b/core/includes/form.inc +++ b/core/includes/form.inc @@ -2907,7 +2907,7 @@ form_error($element, t('The specified passwords do not match.')); } } - elseif (!empty($element['#required_but_empty'])) { + elseif (!empty($element['#required_but_empty']) || ($element['#required'] && !empty($element_state['input']))) { form_error($element, t('Password field is required.')); } @@ -3288,7 +3288,7 @@ * @see form_process_pattern() */ function form_validate_pattern($element, &$form_state) { - if (empty($element['#required_but_empty']) && $element['#value'] !== '') { + if (!empty($element['#required_but_empty']) || $element['#value'] !== '') { // The pattern must match the entire string and should have the same // behavior as the RegExp object in ECMA 262. // - Use bracket-style delimiters to avoid introducing a special delimiter @@ -4115,7 +4115,7 @@ */ function form_validate_number(&$element, &$form_state) { $value = $element['#value']; - if (empty($element['#required_but_empty']) || $value === '') { + if (!empty($element['#required_but_empty']) || $value === '') { return; }