Hej, sitter och arbetar med ett browserspel men har stött på ett problem.
Jag har ett formulär med ett antal textfält i. Tanken är att man ska kunna skriva in ett tal i det och sedan trycka ok så ska informationen sparas i en databas. Problemet är talet man skriver in inte får överstiga ett visst värde. Dessutom ska det finnas en räknare nånstans på sidan som talar om hur många siffor man har kvar att fördela. Skriver man in tex 15 i textfältet men antal siffor som finns kvar att fördela bara är 10 så kommer ett felmedelande. Skriver man istället in 8 så har man 2 poäng kvar att dela ut. Nån som hänger med och vet hur man kan lösa det?
Edit: Det rör sig om flera textfält kanske jag ska berätta. Totalt tre stycken. Så har man totalt 20 poäng och skriver in 5 i ett av fälten. Så har man 15 poäng kvar att fördela på resterande två fält.
parseFloat Method
Returns a floating-point number converted from a string.
Elegantare vore att använda sig av:
parseInt Method
Returns an integer converted from a string.
Vill man kan man skriva Number(foo) också, men varför ens bry sig? Använder man en sträng som en int så hanteras den också som en int, "12"/2 returnerar alltså 6, så varför lägger du till en massa onödig kod?
Har en fråga till. Säg att man har skrivit in ett värde som är för högt och får fram felmedelandet. När man trycker ok, går det att återställa formulären på något sätt så att det senaste ifyllda värdet inte står kvar. Tex om jag har 5 poäng kvar och fyller i 10 så dyker felet upp. Men det står fortfarande 10 i textboxen och antal poäng kvar att fördela är minus ( - ) 5. Kan man fixa detta på något sätt?
Det lättaste är kanske att lägga in en reset på följande sätt:
<script>
function kolla(){
var maxvarde=36;
document.foo.tot.value=Number(document.foo.bar1.value)+Number(document.foo.bar2.value)+Number(document.foo.bar3.value);
if(document.foo.tot.value > maxvarde){
alert("För högt värde!\n"+maxvarde+" är det högsta!");
[b]document.foo.reset();[/b]
}
}
</script>
127 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17