diff --git a/package-lock.json b/package-lock.json index 48d233dff..5f093a3bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1159,11 +1159,10 @@ "dev": true }, "node_modules/glob": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", - "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^4.0.1", @@ -3374,9 +3373,9 @@ "dev": true }, "glob": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", - "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", "dev": true, "requires": { "foreground-child": "^3.1.0", diff --git a/render/render.js b/render/render.js index 6ecb38ee5..674a8266a 100644 --- a/render/render.js +++ b/render/render.js @@ -684,17 +684,17 @@ module.exports = function() { if (key === "value") { // Only do the coercion if we're actually going to check the value. /* eslint-disable no-implicit-coercion */ - var isFileInput = vnode.tag === "input" && vnode.attrs.type === "file" //setting input[value] to same value by typing on focused element moves cursor to end in Chrome //setting input[type=file][value] to same value causes an error to be generated if it's non-empty - if ((vnode.tag === "input" || vnode.tag === "textarea") && vnode.dom.value === "" + value && (isFileInput || vnode.dom === activeElement(vnode.dom))) return + //minlength/maxlength validation isn't performed on script-set values(#2256) + if ((vnode.tag === "input" || vnode.tag === "textarea") && vnode.dom.value === "" + value) return //setting select[value] to same value while having select open blinks select dropdown in Chrome if (vnode.tag === "select" && old !== null && vnode.dom.value === "" + value) return //setting option[value] to same value while having select open blinks select dropdown in Chrome if (vnode.tag === "option" && old !== null && vnode.dom.value === "" + value) return //setting input[type=file][value] to different value is an error if it's non-empty // Not ideal, but it at least works around the most common source of uncaught exceptions for now. - if (isFileInput && "" + value !== "") { console.error("`value` is read-only on file inputs!"); return } + if (vnode.tag === "input" && vnode.attrs.type === "file" && "" + value !== "") { console.error("`value` is read-only on file inputs!"); return } /* eslint-enable no-implicit-coercion */ } // If you assign an input type that is not supported by IE 11 with an assignment expression, an error will occur. diff --git a/render/tests/manual/minlength-input.html b/render/tests/manual/minlength-input.html new file mode 100644 index 000000000..f26fcbcb4 --- /dev/null +++ b/render/tests/manual/minlength-input.html @@ -0,0 +1,49 @@ + + + + + + + This is minlength validity test (#2256). + Open your browser's Developer Console and follow these steps: +
    +
  1. Type any (1 or 2) characters in the input field.
  2. +
  3. Click “submit.”
  4. +
  5. Click “submit” again.
  6. +
  7. Check the logs displayed in the console.
  8. +
+ +
+ + + + diff --git a/render/tests/manual/minlength-textarea.html b/render/tests/manual/minlength-textarea.html new file mode 100644 index 000000000..92daa7bf0 --- /dev/null +++ b/render/tests/manual/minlength-textarea.html @@ -0,0 +1,49 @@ + + + + + + + This is minlength validity test (#2256). + Open your browser's Developer Console and follow these steps: +
    +
  1. Type any (1 or 2) characters in the textarea field.
  2. +
  3. Click “submit.”
  4. +
  5. Click “submit” again.
  6. +
  7. Check the logs displayed in the console.
  8. +
+ +
+ + + +