Type foutjes opvangen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pascal Schuffelers

Pascal Schuffelers

25/03/2019 19:03:55
Quote Anchor link
Ik gebruik in mijn input veld een controle waarbij als ze per abuis een komma plaatsen dit word omgezet naar een . dmv van dit stukje.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
onChange="this.value=this.value.replace(/,/g, '.');">  


Echter ik zie dat ze soms de fout maken door bv twee punten achter elkaar te zetten of bv twee -- tekens te zetten voor een min getal.
Dus bv.: 22..33 of --2.16

Hoe kan ik opvangen dat bv als ze twee punten zetten dit naar 1 punt terug gebracht word en ook bij 2 -- naar 1 min teken?
Ik had dit gedacht
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
onChange="this.value=this.value.replace(/,/g, '.');this.value=this.value.replace(/../g, '.');this.value=this.value.replace(/--/g, '-');">  

Maar dat gaat niet werken.

Kan mij iemand op weg helpen aub?
Gewijzigd op 25/03/2019 19:29:15 door Pascal Schuffelers
 
PHP hulp

PHP hulp

25/04/2019 20:52:35
Honeypot
 
Rob Doemaarwat

Rob Doemaarwat

25/03/2019 19:49:24
Quote Anchor link
Als je "een of meer" wilt matchen in een regex gebruik je de "+", dus bijvoorbeeld .replace(/\.+/g,'.') vervangt een of meer punten (een punt moet je escapen, anders matcht ie elk karakter) door een enkele.

Ook kun je die replaces gewoon achter elkaar plakken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
onChange="this.value=this.value.replace(/,+/g, '.').replace(/\.+/g, '.').replace(/-+/g, '-');"


Overigens is het altijd tricky om voor de gebruiker te gaan denken. Soms vervang je iets wat wel zo bedoeld was, of heel anders dan dat jij het corrigeert. Een foutmelding is dan duidelijker (gewoon het invoerveld rood maken is al voldoende).
Gewijzigd op 25/03/2019 19:50:45 door Rob Doemaarwat
 
Thomas van den Heuvel

Thomas van den Heuvel

25/03/2019 23:01:14
Quote Anchor link
Of je maakt voor een getal en de decimalen aparte velden. Als je iemand geen gelegenheid geeft om fouten te maken dan gebeurt dit ook niet. Bijkomend voordeel is dat de controles simpeler worden. Hetzelfde kun je doen voor het positief/negatief zijn van het getal.

En ja, een whitelist (een set van waarden/patronen die zijn toegestaan) is altijd makkelijker/beter dan een blacklist (een set van niet toegestane patronen). Dit omdat als je een geval waar je niet aan had gedacht mist in je blacklist daarmee in wezen je controle om zeep is.
Gewijzigd op 25/03/2019 23:02:39 door Thomas van den Heuvel
 
Pascal Schuffelers

Pascal Schuffelers

26/03/2019 06:41:10
Quote Anchor link
Het werkt thx.
@Rob , het input veld word al rood als de ingevulde waarde buiten specs valt, maar ik zal je suggestie meenemen :)
@Thomas, thx voor de info , zal het idem meenemen bij het bouwen van een nieuwe pagina.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.