Security News
vlt Debuts New JavaScript Package Manager and Serverless Registry at NodeConf EU
vlt introduced its new package manager and a serverless registry this week, innovating in a space where npm has stagnated.
org.webjars.npm:get-form-data
Advanced tools
Gets form data - or data for a named form field - via form.elements
.
Data is retrieved in a format similar to request parameters which would be sent if the form was submitted, so this module is suitable for extracting form data on the client side for projects which implement isomorphic handling of form submission.
npm install get-form-data
Browser bundles area available, which export a global getFormData
function.
To get data for an entire form, use the getFormData()
function:
<form id="productForm">
...
<label>Product:</label>
<select name="product">
<option value="1" selected>T-shirt</option>
<option value="2">Hat</option>
<option value="3">Shoes</option>
</select>
<label>Quantity:</label>
<input type="number" name="quantity" min="0" step="1" value="9">
<label>Express shipping</label>
<p>Do you want to use <a href="/shipping#express">Express Shipping</a>?</p>
<div class="radios">
<label><input type="radio" name="shipping" value="express" checked> Yes</label>
<label><input type="radio" name="shipping" value="regular"> No</label>
</div>
<label>Terms of Service:</label>
<p>I have read and agree to the <a href="/">Terms of Service</a>.</p>
<label class="checkbox"><input type="checkbox" name="tos" checked> Yes</label>
...
</form>
let form = document.querySelector('#productForm')
let data = getFormData(form)
console.log(JSON.stringify(data))
{"product": "1", "quantity": "9", "shipping": "express", "tos": true}
To get data for individual form fields (which may contain multiple form inputs with the same name), use the getFieldData()
function, which is exposed as a property of getFormData
:
<form id="tshirtForm">
...
<label>Sizes:</label>
<div class="checkboxes">
<label><input type="checkbox" name="sizes" value="S"> S</label>
<label><input type="checkbox" name="sizes" value="M" checked> M</label>
<label><input type="checkbox" name="sizes" value="L" checked> L</label>
</div>
...
</form>
let form = document.querySelector('#tshirtForm')
let sizes = getFormData.getFieldData(form, 'sizes')
console.log(JSON.stringify(sizes))
["M", "L"]
To trim user input, pass a trim: true
option to getFormData()
or getFieldData()
:
<form id="signupForm">
...
<label>Username:</label>
<input type="text" name="username" value="AzureDiamond ">
<label>Password:</label>
<input type="password" name="password" value=" hunter2 ">
...
</form>
let form = document.querySelector('#signupForm')
let data = getFormData(form, {trim: true})
console.log(JSON.stringify(data))
{"username": "AzureDiamond", "password": "hunter2"}
Disabled inputs are ignored by default; to include their data, pass an includeDisabled: true
option to getFormData()
or getFieldData()
.
let data = getFormData(form, {includeDisabled: true})
Where possible, data extracted from <input type="file">
will be native
File
objects.
If the .files
property is not available, the .value
property will be used to provide data instead.
getFormData(form: HTMLFormElement[, options: Object])
Extracts data from a <form>
's .elements
collection - in order to use .elements
, form inputs must have name
or id
attributes. Since multiple inputs can't have the same id
and a name
allows an input to qualify as a successful control for form submission, name
attributes are preferred and will be given priority if both are present.
The following options can be configured:
trim: Boolean
(default: false
) - if true
, leading and trailing whitespace will be trimmed from user input in text entry form inputs.includeDisabled: Boolean
(default: false
) - if true
, disabled inputs will not be ignored.Object<string, boolean | string | string[] | File | File[]>
Properties in the returned data object are mostly consistent with what would have been sent as request parameters if the form had been submitted:
''
if they are empty.value
attribute will be used.multiple
) will only contribute a value if they have at least one value to submit. Their values will always be held in an Array
, even if there is only one.Exceptions to this are:
value
attribute, its value will be true
. Normally it would default to 'on'
when submitted, but this isn't as useful a default on the client.getFieldData(form: HTMLFormElement, fieldName: String[, options: Object])
getFieldData()
is a named export when using ES modules, otherwise it's also available asgetFormData.getFieldData()
Extracts data for a named field from a <form>
's .elements
collection.
Options are as documented for getFormData
.
null | boolean | string | string[] | File | File[]
This function is used by getFormData()
, so the documentation for individual return values above also applies.
null
will be returned if the field is non-existent, disabled, or shouldn't contribute a value (e.g. unchecked checkboxes, multiple selects with no selections, file inputs with no selections).
FAQs
WebJar for get-form-data
We found that org.webjars.npm:get-form-data demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
vlt introduced its new package manager and a serverless registry this week, innovating in a space where npm has stagnated.
Security News
Research
The Socket Research Team uncovered a malicious Python package typosquatting the popular 'fabric' SSH library, silently exfiltrating AWS credentials from unsuspecting developers.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.