Formatul de proiectare Cum se formatează automat intrarea utilizatorului

În acest tutorial veți învăța cum să formatați, în timp real, intrarea utilizatorilor într-un câmp de formular. Pe măsură ce un utilizator introduce ceva într-un câmp de introducere, valoarea va fi ajustată automat, adăugând lucruri precum punctuația și liniuțele, tăierea spațiilor, eliminarea caracterelor neașteptate și modificarea caracterelor.

Această abordare poate facilita foarte mult utilizatorii atunci când introduc datele formularului. Ea facilitează procesul, minimizează erorile, oferă feedback și, în general, îmbunătățește experiența utilizatorului.

Vom explora două exemple, folosind jQuery pentru API-uri, metode și utilitare, pentru a face codul mai convenabil și mai intuitiv. Având o înțelegere de bază a jQuery va ajuta, deși ar trebui să puteți înțelege ce se întâmplă chiar dacă nu faceți asta. Sa incepem!

1. Cum să formatați o valoare valută

Verificați stiloul de pornire, lăsați-l și urmați-l. Conține a text câmp de intrare, cu unele stiluri pentru a fi prezentabil. Fila JS este goală, dar deja a fost adăugată jQuery la și este gata să plece!

Și după cum puteți vedea mai jos, contribuția noastră se așteaptă la o sumă de bani. Acest tip de câmp de intrare poate fi găsit, de obicei, într-un formular bancar, procesor de plată sau formă de schimb valutar.

Există două probleme pe care le-am întâlnit frecvent cu acest tip de intrare:

  • Unii oameni (ca mine) au un timp greu de distingere între 1000000 și 10000000, fără a adăuga separatorul de mii. Este un milion sau zece milioane?
  • Unii oameni adaugă singuri separatorul de mii, ceea ce nu este necesar din punct de vedere tehnic. Acest lucru ar putea în cele din urmă invalidate valoarea, ceea ce duce la o eroare aruncată.

Începeți JavaScript

Pentru a începe formatarea valorii de intrare, selectăm intrare element, atribuind rezultatul unei variabile.

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

keyup

Apoi atașăm keyup evenimentul nostru; arderea unei funcții atunci când utilizatorul apasă apoi eliberează o tastă de tastatură.

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

În cadrul acestei funcții adăugăm și câteva linii de cod. Aceste linii suplimentare împiedică funcționarea funcției când utilizatorul 

  1. face o selecție în intrare
  2. sau apasă tastele săgeată de pe tastatură.

În ambele scenarii nu se adaugă niciun caracter nou, deci nu este necesar să se continue executarea funcției.

Functie principala

În continuare, în cadrul funcției noastre, sub secțiunea de prevenire a tastelor săgeți de la executarea funcției, adăugăm următoarele. Aceasta este funcția principală care va formata valoarea.

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

Aceste linii efectuează următoarele:

  1. Extrageți valoarea de la intrare.
  2. Sanitizați valoarea utilizând RegEx eliminând caracterele inutile, cum ar fi spațiile, sublinierile, liniuțele și literele.
  3. lansa parseInt () pentru a vă asigura că valoarea este o valoare întreg (un număr rotund).
  4. Adăugați separatorul de mii cu toLocaleString () funcția, apoi treceți valoarea dezinfectată înapoi la elementul de intrare.

Notă: Separatorul poate fi fie , sau . în funcție de codul de țară transmis în toLocaleString () funcţie. limba germana, de-DE, și Indonezia, am facut, de exemplu, utilizarea . in loc de ,.

Rezultat final

Dați demo-ului o încercare!

Pe măsură ce tastați pe intrare, trebuie să găsiți că literele și caracterele speciale (precum liniuța și punctul) vor fi eliminate imediat. Veți putea introduce numai un număr. Se va adăuga automat separatorul de mii.

2. Cum se formatează un număr de licență

Un alt tip de intrare în cazul în care este logic să se aplice această abordare este "numărul licenței"intrare. Numărul licenței Envato Market sau codul de achiziție, de exemplu, este de 36 de caractere și cuprinde litere, numere și câteva liniuțe. Introducerea corectă pe site-urile autorilor este vitală dacă aveți nevoie de asistență!

De unde este codul meu de cumpărare?

Puteți găsi, de asemenea, acest tip de intrare într-o temă WordPress premium sau un plugin, în care trebuie să introduceți un cod de licență pentru a primi actualizări sau pentru a utiliza anumite caracteristici.

În acest al doilea exemplu, am creat un câmp de introducere, cu un text de substituire care indică formatul numărului de licență. Și după cum puteți vedea mai jos, numărul licenței cuprinde 32 de caractere cu mai multe întreruperi, iar fiecare caracter trebuie să fie capitalizat.

Pistonul de pornire

Iată stiloul de pornire; dați-i și urmați!

Functie principala

Vom împărtăși aceeași bază de coduri ca primul exemplu, cu excepția funcției principale.

// 1 var $ this = $ (acest lucru); var introducere = $ this.val (); // var = 0, varianta var = 0, varianta var = 0; = 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(); ); 

Funcția principală, în acest caz:

  1. Obține valoarea din intrare.
  2. Îndepărtează caracterele nevalide, acestea fiind spații, caractere speciale precum puncte, linii de subliniere și liniuțe.
  3. Împărțiți intrarea în cinci bucăți de caractere. Prima și ultima bucată vor avea fiecare opt caractere. Restul (al doilea, al treilea și al patrulea fragment) vor fi alcătuite din patru caractere fiecare.
  4. Îmbină fiecare piesă cu o bordură, le transformă în majuscule și trece valoarea înapoi la elementul de intrare.

Rezultat

Numărul nostru de licență este acum pregătit! Încearcă:

Primă!

Check out această demonstrație de către Donnie D'Amato - o intrare pentru datele de formatare:

Mulțumesc lui Donnie!

Înfășurarea în sus

În acest tutorial am parcurs două exemple de formatare automată a informațiilor utilizatorilor, oferind utilizatorilor noștri o experiență mai bună.

Această abordare se aplică pentru orice tip de introducere de text. Ați putea, de exemplu, să o aplicați la o intrare "nume de utilizator" pentru a vă asigura că toate literele sunt litere mici și conțin numai litere. Puteți, de asemenea, să o utilizați pentru a formata o intrare "First and Last Name", asigurându-vă că prima literă este capitalizată.

Când vine vorba de prezentarea formularului și corectarea datelor în mod corespunzător, vă rugăm să luați legătura cu dezvoltatorii dvs. back-end prietenoși.

Resurse suplimentare

  • Structura formularului HTML solid
  • Expresii regulate: Sus și Rularea
  • Validarea Formularului HTML5 Cu atributul "model"
  • Funcția JavaScript laLocalString