27. februar 2002 - 10:59
Der er
12 kommentarer og 1 løsning
Validering tal med komma
Jeg skal bruge en validering på flere felter hvor der kun må indtastes tal, 1 komma og 2 decimaler. Jeg kan godt tjekke på om der kun er indtastet tal, men jeg har problemer med at få den sidste del (kommadelen) med i valideringen. Håber der er nogen der kan løse den.
Annonceindlæg fra Admin By Request
27. februar 2002 - 11:11
#1
Noget i denne stil? <html> <HEAD> <SCRIPT LANGUAGE="JavaScript"> function currencyFormat(fld, milSep, decSep, e) { var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; // Enter key = String.fromCharCode(whichCode); // Get key value from key code if (strCheck.indexOf(key) == -1) return false; // Not a valid key len = fld.value.length; for(i = 0; i < len; i++) if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i); aux += key; len = aux.length; if (len == 0) fld.value = ''; if (len == 1) fld.value = '0'+ decSep + '0' + aux; if (len == 2) fld.value = '0'+ decSep + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += milSep; j = 0; } aux2 += aux.charAt(i); j++; } fld.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) fld.value += aux2.charAt(i); fld.value += decSep + aux.substr(len - 2, len); } return false; } </script> </HEAD> <BODY> <form> Indtast værdi: <input type=text name=test length=15 onKeyPress="return(currencyFormat(this,',','.',event))"> </form> </html>
27. februar 2002 - 11:17
#2
Kan man ikke få den til at bruge et rigtigt komma istedet for et punktum??
27. februar 2002 - 11:35
#3
Jo da: <html> <HEAD> <SCRIPT LANGUAGE="JavaScript"> function currencyFormat(fld, milSep, decSep, e) { var sep = 0; var milSep = "."; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; // Enter key = String.fromCharCode(whichCode); // Get key value from key code if (strCheck.indexOf(key) == -1) return false; // Not a valid key len = fld.value.length; for(i = 0; i < len; i++) if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i); aux += key; len = aux.length; if (len == 0) fld.value = ''; if (len == 1) fld.value = '0'+ decSep + '0' + aux; if (len == 2) fld.value = '0'+ decSep + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += milSep; j = 0; } aux2 += aux.charAt(i); j++; } fld.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) fld.value += aux2.charAt(i); fld.value += decSep + aux.substr(len - 2, len); } return false; } </script> </HEAD> <BODY> <form> Indtast værdi: <input type=text name=test length=15 onKeyPress="return(currencyFormat(this,',',',',event))"> </form> </html>
27. februar 2002 - 11:40
#4
Umiddelbart ser det ud til at dække det jeg ønsker. Jeg skal lige prøve...vender tilbage i morgen.
27. februar 2002 - 11:41
#5
Oki doki
27. februar 2002 - 12:53
#6
Inden du giver de points videre... så vil jeg foreslå dig at bruge regulære udtryk til at løse problemet, så kan du skrive det hele på et par linjer... skriv endelig tilbage hvis du er interesseret i den løsning :) - bpj@dfu.min.dk
27. februar 2002 - 14:17
#7
ghost1> Jeg vil da gerne se din løsning på mit spørgsmål.
28. februar 2002 - 13:23
#8
mon ikke noget i retning af: <html> <head><title>test af regexp</title> <script type='text/javascript'> <!-- var re = /^-?\d+(,\d{1,2}|)$/ ; function valider( feltObj ) { if ( feltObj.value.match( re ) ) { return 'true' } else { return 'false'; } } // --> </script> </head> <body> <form onsubmit='return false;'> <input type='text' value="12,34" name='testfelt'> <input type='button' value='test' onclick="alert( 'taltest giver ' + valider( this.form.testfelt ) );"> </form> </body> </html>
28. februar 2002 - 17:34
#9
Okay, jeg skulle vist bare have skrevet løsningen i første omgang.. jakoba´s løsning skulle være god nok... regulære udtryk er bare lækre :)
04. marts 2002 - 09:34
#10
jakoba> Det virker fint. Nu har jeg en masse andre felter som jeg tester i en function. Når jeg skal have dette script til at være en del at min nuværende function hvordan skal dette så gøres?
12. april 2002 - 09:48
#11
Bedre sent end aldrig...den har vist ligget lidt for længe den her. Jakoba> Hvis du vil have lidt point så må du lige svare.
06. juni 2002 - 15:57
#12
luk sp.
07. juni 2002 - 08:15
#13
senj> jeg havde forventet at jakoba ville svare, men nej, så du får alle point.
Vi tilbyder markedets bedste kurser inden for webudvikling