Design del modulo come formattare automaticamente l'input dell'utente

In questo tutorial imparerai come formattare, in tempo reale, l'input dell'utente in un campo modulo. Quando un utente digita qualcosa in un campo di input, il valore viene regolato automaticamente, aggiungendo elementi come punteggiatura e trattini, ritaglio degli spazi, rimozione di caratteri imprevisti e modifica dell'involucro delle parole.

Questo approccio può facilitare notevolmente gli utenti durante l'immissione dei dati del modulo. Semplifica il processo, riduce al minimo gli errori, fornisce feedback e generalmente migliora l'esperienza dell'utente.

Esploreremo due esempi, utilizzando jQuery per le API, i metodi e le utilità per rendere la scrittura del codice più comoda e intuitiva. Avere una conoscenza di base di jQuery aiuterà, anche se dovresti essere in grado di capire cosa sta succedendo anche se non lo fai. Cominciamo!

1. Come formattare un valore di valuta

Controlla la penna di avviamento, forchetta e seguila. Contiene a testo campo di input, con alcuni stili per renderlo presentabile. La scheda JS è vuota, ma ha già aggiunto jQuery al ed è pronto ad andare!

E come puoi vedere qui sotto, il nostro input si aspetta una somma di denaro. Questo tipo di campo di input può essere in genere trovato in un modulo bancario, di elaborazione pagamenti o di cambio valuta.

Ci sono due problemi che ho riscontrato frequentemente con questo tipo di input:

  • Alcune persone (come me) hanno difficoltà a distinguere tra 1000000 e 10000000 senza aggiungere il separatore delle migliaia. È un milione o dieci milioni?
  • Alcune persone aggiungono da sole il separatore delle migliaia, che tecnicamente non è necessario. Questo alla fine potrebbe invalidare il valore, causando un errore.

Inizia JavaScript

Per iniziare la formattazione del valore di input, selezioniamo il ingresso elemento, assegnando il risultato a una variabile.

var $ form = $ ("#form"); var $ input = $ form.find ("input");

keyup

Quindi attacciamo il keyup evento per il nostro contributo; attivare una funzione quando l'utente preme e rilascia un tasto della tastiera.

$ input.on ("keyup", function (event) // 1. var selection = window.getSelection (). toString (); if (selection! == ") return; // 2. if ($ .inArray (event.keyCode, [38,40,37,39])! == -1) return;);

All'interno di questa funzione aggiungiamo anche alcune righe di codice. Queste linee aggiuntive impediscono l'esecuzione della funzione quando l'utente 

  1. effettua una selezione all'interno dell'input
  2. o preme i tasti freccia sulla tastiera.

In entrambi questi scenari non viene aggiunto alcun nuovo carattere, quindi non è necessario continuare ad eseguire la funzione.

Funzione principale

Successivamente, sempre all'interno della nostra funzione, sotto la sezione che impedisce ai tasti freccia di eseguire la funzione, aggiungiamo quanto segue. Questa è la funzione principale che formatta il valore.

 // 1 var $ this = $ (questo); var input = $ this.val (); // 2 var input = input.replace (/ [\ D \ s \ ._ \ -] + / g, ""); // 3 input = input? parseInt (input, 10): 0; // 4 $ this.val (function () return (input === 0)? "": Input.toLocaleString ("en-US"););

Queste linee eseguono quanto segue:

  1. Recupera il valore dall'input.
  2. Disinfetta il valore usando RegEx rimuovendo caratteri non necessari come spazi, trattini bassi, trattini e lettere.
  3. schierare parseInt () funzione per assicurarsi che il valore sia un numero intero (un numero tondo).
  4. Aggiungi il separatore delle migliaia con il toLocaleString () funzione, quindi restituire il valore igienizzato all'elemento di input.

Nota: Il separatore può essere , o . a seconda del codice del paese passato in toLocaleString () funzione. Tedesco, de-DE, e Indonesia, L'ho fatto, per esempio, usa . invece di ,.

Risultato finale

Prova la demo!

Mentre stai digitando l'input, dovresti scoprire che lettere e caratteri speciali (come dash e punto) saranno rimossi immediatamente. Sarai solo in grado di inserire un numero. Il separatore delle migliaia verrà automaticamente aggiunto.

2. Come formattare un numero di licenza

Un altro tipo di input in cui ha senso applicare questo approccio è il "Numero di licenza"ingresso. Il numero di licenza di Envato Market o il codice di acquisto, ad esempio, è lungo 36 caratteri e comprende lettere, numeri e alcuni trattini. Inserirlo correttamente nei siti Web degli autori è fondamentale se hai bisogno di supporto!

Da dove è il mio codice di acquisto?

È inoltre possibile trovare questo tipo di input in un tema o plug-in WordPress premium, in cui è necessario immettere un codice di licenza per ricevere aggiornamenti o utilizzare funzionalità particolari.

In questo secondo esempio, abbiamo creato un campo di input con un testo segnaposto che suggerisce il formato del numero di licenza. E come puoi vedere qui sotto, il numero di licenza comprende 32 caratteri con diversi trattini nel mezzo e ogni carattere dovrebbe essere in maiuscolo.

Penna iniziale

Ecco la penna di avviamento; forchetta e segui!

Funzione principale

Condivideremo la stessa base di codice del nostro primo esempio, ad eccezione della funzione principale.

// 1 var $ this = $ (questo); var input = $ this.val (); // 2 input = input.replace (/ [\ W \ s \ ._ \ -] + / g, "); // 3 var split = 4; var chunk = []; per (var i = 0, len = input.length; i < len; i += split)  split = ( i >= 8 && i <= 16 ) ? 4 : 8; chunk.push( input.substr( i, split ) );  // 4 $this.val(function()  return chunk.join("-").toUpperCase(); ); 

La funzione principale, in questo caso:

  1. Ottiene il valore dall'input.
  2. Rimuove i caratteri non validi, ovvero spazi, caratteri speciali come punti, caratteri di sottolineatura e trattini.
  3. Divide l'input in cinque blocchi di caratteri. Il primo e l'ultimo blocco avranno ciascuno otto caratteri. Il resto (secondo, terzo e quarto pezzo) sarà composto da quattro caratteri ciascuno.
  4. Unisce ogni pezzo con un trattino, lo trasforma in maiuscolo e restituisce il valore all'elemento di input.

Risultato

Il nostro numero di licenza è ora pronto! Provaci:

indennità!

Dai un'occhiata a questa demo di Donnie D'Amato, un input per le date di formattazione:

Grazie Donnie!

Avvolgendo

In questo tutorial, abbiamo analizzato due esempi di formattazione automatica dell'input dell'utente, offrendo ai nostri utenti un'esperienza più fluida.

Questo approccio è applicabile a qualsiasi tipo di input di testo. Ad esempio, è possibile applicarlo a un input "username" per assicurarsi che tutte le lettere siano in minuscolo e contenere solo lettere. Puoi anche usarlo per formattare un input "First e Last Name", assicurando che la prima lettera sia maiuscola.

Quando si tratta di inviare il modulo e di eseguire correttamente il sanitation dei dati, si prega di contattare i propri amici sviluppatori back-end.

Ulteriori risorse

  • Struttura del modulo HTML solido
  • Espressioni regolari: attivo e funzionante
  • Validazione del modulo HTML5 con l'attributo "pattern"
  • Funzione JavaScript toLocalString