Browse Source

Fix showing/clearing of custom validity message.

ADmad 6 years ago
parent
commit
b89cbc2aaa
2 changed files with 8 additions and 8 deletions
  1. 2 2
      src/View/Helper/FormHelper.php
  2. 6 6
      tests/TestCase/View/Helper/FormHelperTest.php

+ 2 - 2
src/View/Helper/FormHelper.php

@@ -1467,8 +1467,8 @@ class FormHelper extends Helper
                 $options['templateVars']['customValidityMessage'] = $message;
 
                 if ($this->getConfig('autoSetCustomValidity')) {
-                    $options['oninvalid'] = "this.setCustomValidity('$message')";
-                    $options['onvalid'] = "this.setCustomValidity('')";
+                    $options['oninvalid'] = "this.setCustomValidity(''); if (!this.validity.valid) this.setCustomValidity('$message')";
+                    $options['oninput'] = "this.setCustomValidity('')";
                 }
             }
         }

+ 6 - 6
tests/TestCase/View/Helper/FormHelperTest.php

@@ -8529,8 +8529,8 @@ class FormHelperTest extends TestCase
                 'type' => 'password',
                 'value' => '',
                 'required' => 'required',
-                'onvalid' => 'this.setCustomValidity('')',
-                'oninvalid' => 'this.setCustomValidity('This field is required')',
+                'oninput' => 'this.setCustomValidity('')',
+                'oninvalid' => 'this.setCustomValidity(''); if (!this.validity.valid) this.setCustomValidity('This field is required')',
             ]
         ];
         $this->assertHtml($expected, $result);
@@ -8547,8 +8547,8 @@ class FormHelperTest extends TestCase
                 'value' => '',
                 'maxlength' => 255,
                 'required' => 'required',
-                'onvalid' => 'this.setCustomValidity('')',
-                'oninvalid' => 'this.setCustomValidity('This field cannot be left empty')',
+                'oninput' => 'this.setCustomValidity('')',
+                'oninvalid' => 'this.setCustomValidity(''); if (!this.validity.valid) this.setCustomValidity('This field cannot be left empty')',
             ]
         ];
         $this->assertHtml($expected, $result);
@@ -8565,8 +8565,8 @@ class FormHelperTest extends TestCase
                 'value' => '',
                 'maxlength' => 255,
                 'required' => 'required',
-                'onvalid' => 'this.setCustomValidity('')',
-                'oninvalid' => 'this.setCustomValidity('Custom error message')',
+                'oninput' => 'this.setCustomValidity('')',
+                'oninvalid' => 'this.setCustomValidity(''); if (!this.validity.valid) this.setCustomValidity('Custom error message')',
             ]
         ];
         $this->assertHtml($expected, $result);