diff --git a/src/FormElement/PasswordElement.php b/src/FormElement/PasswordElement.php
index dfa6d8c5..6ef78b49 100644
--- a/src/FormElement/PasswordElement.php
+++ b/src/FormElement/PasswordElement.php
@@ -15,6 +15,9 @@ class PasswordElement extends InputElement
     /** @var bool Status of the form */
     protected $isFormValid = true;
 
+    /** @var bool Status indicating if the form got submitted */
+    protected $isFormSubmitted = false;
+
     protected function registerAttributeCallbacks(Attributes $attributes)
     {
         parent::registerAttributeCallbacks($attributes);
@@ -22,11 +25,16 @@ protected function registerAttributeCallbacks(Attributes $attributes)
         $attributes->registerAttributeCallback(
             'value',
             function () {
-                if ($this->hasValue() && count($this->getValueCandidates()) === 1 && $this->isFormValid) {
+                if (
+                    $this->hasValue()
+                    && count($this->getValueCandidates()) === 1
+                    && $this->isFormValid
+                    && ! $this->isFormSubmitted
+                ) {
                     return self::DUMMYPASSWORD;
                 }
 
-                if (parent::getValue() === self::DUMMYPASSWORD) {
+                if (parent::getValue() === self::DUMMYPASSWORD && count($this->getValueCandidates()) > 1) {
                     return self::DUMMYPASSWORD;
                 }
 
@@ -40,6 +48,10 @@ public function onRegistered(Form $form)
         $form->on(Form::ON_VALIDATE, function ($form) {
             $this->isFormValid = $form->isValid();
         });
+
+        $form->on(Form::ON_SENT, function ($form) {
+            $this->isFormSubmitted = $form->hasBeenSent();
+        });
     }
 
     public function getValue()