Extract and set form values through the DOM—no frameworks required! https://github.com/TheoryOfNekomata/formxtra
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
TheoryOfNekomata 8511d76949 Update README 1 ano atrás
cypress Cover all input types 1 ano atrás
docs Update README 1 ano atrás
src Update documentation 1 ano atrás
.eslintrc Switch to pridepack, add setFormValues 1 ano atrás
.gitignore Add coverage reporting 1 ano atrás
.npmignore Add coverage reporting 1 ano atrás
.prettierrc Separate prettierrc 3 anos atrás
LICENSE Switch to pridepack, add setFormValues 1 ano atrás
README.md Update README 1 ano atrás
cypress.json Add support for multiple values 1 ano atrás
package.json Update tests, fix multiple value setting 1 ano atrás
pridepack.json Switch to pridepack, add setFormValues 1 ano atrás
publish.sh Update usage notes, prepare for publishing 3 anos atrás
test-globals.js Switch to pridepack, add setFormValues 1 ano atrás
tsconfig.eslint.json Update tsconfig 1 ano atrás
tsconfig.json Update tsconfig 1 ano atrás
vitest.config.js Switch to pridepack, add setFormValues 1 ano atrás
yarn.lock Add coverage reporting 1 ano atrás

README.md

formxtra

The companion for Web forms!

Extract and set form values through the DOM—no frameworks required!

Lightweight. Simple. It Just Works.

Installation

The package can be found on:

Usage

For an example form:

<button id="autofill" type="button">
  Autofill login form
</button>

<form id="loginForm">
  <input type="text" name="username" />
  <input type="password" name="password" />
  <button type="submit" name="type" value="client">
    Log In As Client
  </button>
  <button type="submit" name="type" value="admin">
    Log In As Admin
  </button>
</form>

<label>
  <input type="checkbox" name="remember" form="loginForm" />
  Remember my login credentials
</label>

Use the library as follows (code is in TypeScript, but can work with JavaScript as well):

import { getFormValues, setFormValues } from '@theoryofnekomata/formxtra';

// This is the only query we need. On libraries like React, we can easily get form elements when we
// attach submit event listeners.
const form: HTMLFormElement = document.getElementById('form');

const processResponse = async (response: Response) => {
  const result = await response.json();

  alert(`Welcome ${result.user}!`);
};

// Best use case is with event handlers
form.addEventListener('submit', async e => {
  const {
    currentTarget: thisForm,
    submitter,
  } = e;
  e.preventDefault();

  const values = getFormValues(thisForm, { submitter });

  // Get the form values and send as request to some API
  const response = await fetch(
    'https://example.com/api/log-in',
    {
      method: 'POST',
      body: JSON.stringify(values),
      headers: {
        'Content-Type': 'application/json',
      },
    },
  );

  if (response.ok) {
    processResponse(response);
  }
});

const autofillButton = document.getElementById('autofill');

autofillButton.addEventListener('click', e => {
  setFormValues(form, { username: 'admin', remember: true });
});

There are utility functions exported alongside getFormValues() and setFormValues(). You may want to use namespace import with this library, i.e. import * as formxtra from '@theoryofnekomata/formxtra'.

See the documentation folder for more details.

Tests

The library has been tested on the static DOM using JSDOM, and the real dynamic DOM using Cypress.

License

MIT