webForumDet fria alternativet

tal som ej får överstiga en viss summa

JavaScriptur Javascript

8 svar · 363 visningar · startad av pulse

Medlem sedan nov. 200373 inlägg
Frågan#1

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.

Medlem sedan nov. 20017 144 inlägg
#2

Här är kanske en början:

<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!");
	}
}
</script>

<form name="foo">
bar1:<input type="text" name="bar1" onkeyup="kolla()">
<br>
bar2:<input type="text" name="bar2" onkeyup="kolla()">
<br>
bar3:<input type="text" name="bar3" onkeyup="kolla()">
<br>
Totalt:<input type="text" name="tot" disabled onfocus="this.blur()">
</form>
Medlem sedan juli 2003303 inlägg
#3

Samtliga citat är hämtade från msdn (http://msdn.microsoft.com/library)

Alltså, varför använder du metoden parseFloat?

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?

:P

Medlem sedan nov. 20017 144 inlägg
#4

En massa onödig kod? Vad menar du? Ett textfält returnerar väl en sträng?
/r Det funka visst utan... :)

Medlem sedan juli 2003303 inlägg
#5

parseFloat är en massa onödig (och felaktig) kod :) Man ser det väldigt ofta och det förvirrar en hel del.

Medlem sedan nov. 20017 144 inlägg
#6

Jag kan hålla med om att den kanske var onödig då, men en massa vet jag inte riktigt om det var. ;)

Medlem sedan nov. 200373 inlägg
#7

Funkar utmärkt Jesper :) tack så mycke!

Medlem sedan nov. 200373 inlägg
#8

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?

Medlem sedan nov. 20017 144 inlägg
#9

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
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)