File tree Expand file tree Collapse file tree 1 file changed +33
-9
lines changed Expand file tree Collapse file tree 1 file changed +33
-9
lines changed Original file line number Diff line number Diff line change @@ -7,15 +7,21 @@ export class FormData {
7
7
*/
8
8
constructor ( form ) {
9
9
if ( form !== undefined ) {
10
- const error = isHTMLFormElement ( form )
11
- ? new TypeError (
12
- "FormData constructor: HTMLFormElement parameter is not supported, if you need it submit an issue"
13
- )
14
- : new TypeError (
15
- "FormData constructor: Argument 1 does not implement interface HTMLFormElement."
16
- ) ;
17
-
18
- throw error ;
10
+ for ( const element of form . elements ) {
11
+ if ( isSelectElement ( element ) ) {
12
+ for ( const option of element . options ) {
13
+ if ( option . selected ) {
14
+ this . append ( element . name , option . value ) ;
15
+ }
16
+ }
17
+ } else if (
18
+ isInputElement ( element ) &&
19
+ ( element . checked || ! [ 'radio' , 'checkbox' ] . includes ( element . type ) ) &&
20
+ element . name
21
+ ) {
22
+ this . append ( element . name , element . value ) ;
23
+ }
24
+ }
19
25
}
20
26
21
27
/**
@@ -312,3 +318,21 @@ const BlobFile = class File {
312
318
const panic = ( error ) => {
313
319
throw error ;
314
320
} ;
321
+
322
+ /**
323
+ *
324
+ * @param {Element } element
325
+ * @returns {boolean }
326
+ */
327
+ function isSelectElement ( element ) {
328
+ return element . tagName === 'SELECT' ;
329
+ }
330
+
331
+ /**
332
+ *
333
+ * @param {Element } element
334
+ * @returns {boolean }
335
+ */
336
+ function isInputElement ( element ) {
337
+ return element . tagName === 'INPUT' || element . tagName === 'TEXTAREA' ;
338
+ }
You can’t perform that action at this time.
0 commit comments