Waarde controle en inkleuren werkt niet 100% met javascript.
Door
Pascal Schuffelers
op 22-03-2019 07:40
gewijzigd op 22-03-2019 07:42
2.358 views
Ik heb op mijn pagina een controle op mijn input velden zitten.
Hij controleert aan de hand van de ingelezen waarde of het ingevulde waarde er tussen in ligt.
Echter ik heb een fenomeen, ook vermoedelijk te begrijpen, dat hij sommige input velden rood kleurt terwijl niets is ingevuld.
Als beide ingelezen waarde (t1 en t2) beide 0 zijn doet hij niets, blijft de achtergrond van de input veld wit, dat is goed.
Maar als de grenzen bv 0 en 20 en ingevulde waarde buiten de grenzen valt van t1 en t2 kleurt hij ook rood, dat is goed en als ik niks invul blijft hij wit, vermoedelijk, naar mijn mening ziet hij de begin waarde als 0 aan als niks is ingevuld.
Maar als ik grenzen heb van 70 en 80 , dan kleurt hij zonder iets in te vullen al rood.
Hopelijk is mijn vraagstelling duidelijk en is dit eventueel op te lossen?
Zet je get_value wel ergens expliciet om naar een integer met parseInt()? Alle formulierinhoud is per definitie van het type string geloof ik. JavaScript is (nogal) typegevoelig.
Zet je get_value wel ergens expliciet om naar een integer met parseInt()? Alle formulierinhoud is per definitie van het type string geloof ik. JavaScript is (nogal) typegevoelig.
Nee dat had ik niet gedaan, nu net even gedaan en nu kleuren alle vakken rood en de ene wel en de andere niet, dus ik ga ervan uit dat die controle nu niet correct is.
Vraag, die parseInt() rond die af op hele getallen? merk dat hij op hele getallen wel werkt maar niet achter de komma of moet deze ook omgezet worden .: var t1 = document.getElementById('emp_RColorLMin').innerHTML;
[update]
Opgelost met parseFloat :D
Moet je wel gelijk geven Javascript is wel heel erg gevoelig voor fouten :S
Nah, JavaScript is gewoon (veel) strict(er). Waarschijnlijk was je strings aan het vergelijken in plaats van getallen. Dan geldt een andere (alfabetische) sorteringsvolgorde waardoor het lijkt alsof de resultaten willekeurig zijn.
Vergelijk:
<!DOCTYPE html>
<html>
<head>
<title>sortering test</title>
</head>
<body>
<script type="text/javascript">
var test1 = '3.14'; // let op quotes
var test2 = '12'; // alles wat uit een formulier komt is per definitie van het type string
alert(test1 < test2); // levert false, immers 3 komt alfabetische gezien na 1
alert(parseFloat(test1) < parseFloat(test2)); // levert true, immers 3.14 is kleiner dan 12
</script>
</body>
</html>