mit Javaskript nur bis 0 runterzählen
Thomas
- javascript
Hallo,
habe schon ewig nichts mehr mit Javaskript gemacht und stehe nun vor einem kleinen Problem. Ich habe 2 Buttons, einmal "+" und einmal "-", mit denen wird in einem Inputfeld die Zahl geändert. Funktioniert auch wunderbar, jedoch kann man momentan mit dem "-"-Button auch negative Zahlen in dem Inputfeld generieren. Das soll aber nicht so sein, es soll mindestens eine "1" in dem Inputfeld stehen. Lässt sich irgendwie eine Begrenzung in das Skript einfüggen, bis zu der mit dem "-"-Button maximal runtergezählt werden darf?
Hier der Codeschnipsel um den es geht:
<input type="button" value="-" class="minus" onClick="this.form.ArticleQuantity.value=parseInt(this.form.ArticleQuantity.value)-1" style="float:left;width:22px;"/>
<div style="border-top:1px solid #333366;border-bottom:1px solid #333366;height:22;width:35px;float:left;margin-left:0px;"><input type="text" name="ArticleQuantity" value="1" maxlength="3" class="anzahl" /></div>
<input type="button" value="+" class="plus" onClick="this.form.ArticleQuantity.value=parseInt(this.form.ArticleQuantity.value)+1"/>
Oder bin ich mit meinem Codeschnipsel komplett auf dem Holzweg?
Vielen Dank schonmal.
Thomas
Hallo,
Ich würde eventuell überlegen, die Funktionen für das Hoch- unt Runterzählen nicht direkt ins HTML einzutragen, sondern in einem eigenen JavaScript-Block. Das macht den Code etwas lesbarer. Gleiches gilt für die CSS-Informationen.
Aber zu Deinem eigentlichen Problem:
Lässt sich irgendwie eine Begrenzung in das Skript einfüggen, bis zu der mit dem "-"-Button >maximal runtergezählt werden darf?
<input type="button" value="-" class="minus" onClick="this.form.ArticleQuantity.value=Math.max(1,parseInt(this.form.ArticleQuantity.value)-1)" style="float:left;width:22px;"/>
Das müsste eigentlich klappen.
Viele Grüße,
Jörg
Hi,
Lässt sich irgendwie eine Begrenzung in das Skript einfüggen, bis zu der mit dem "-"-Button maximal runtergezählt werden darf?
natürlich - setz die Anweisung fürs Abwärtszählen in eine if-Abfrage, die erst prüft, ob der momentane Wert noch größer als der Mindestwert ist (also z.B. >0). Denn nur dann darf er noch weiter verringert werden.
this.form.ArticleQuantity.value=parseInt(this.form.ArticleQuantity.value)-1
this.form.ArticleQuantity.value=parseInt(this.form.ArticleQuantity.value)+1
Das ließe sich in beiden Fällen auch weniger umständlich mit dem Increment-Operator ++ bzw. dem Decrement-Operator -- formulieren. Die automatische Typumwandlung von Javascript sorgt dann schon dafür, dass der String-Wert aus dem Eingabefeld zunächst in einen Zahlenwert umgewandelt wird, weil die Operatoren ++ und -- nur für Zahlenwerte definiert sind.
Ciao,
Martin
PS: Der Eventhandler heißt onclick, nicht onClick.
--
Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Beim Universum bin ich mir aber nicht ganz sicher.
(Albert Einstein, deutscher Physiker)
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
Ich würde als erstes Funktionen erstellen und die dann im onClick aufrufen. Was du bisher hast ist schon hart an der Grenze der Übersichtlichkeit.
Du willst also nur dann runterzählen wenn der Wert größer als 1 ist?
Wenn heißt auf englisch "if"...
Om nah hoo pez nyeetz, Thomas!
Oder bin ich mit meinem Codeschnipsel komplett auf dem Holzweg?
Du solltest vielleicht deine onklick-Geschichten nicht so aufblasen, sondern den relevanten Code in eine Funktion auslagern.
if (value > 1) value--; /* unvollständig */
Matthias
HTML5 bietet mit dem input-Element im number-Status bereits ein ähnliches Werkzeug an. Vorteil der Standardvariante ist außerdem, dass für verschiedene Endgeräte optimierte Widgets angezeigt werden können, bei Smartphones kann zum Beispiel eine numerische Tastatur eingeblendet werden.
Beispiel:
<input type="number" min="1" step="1" />
Browserunterstützung für Desktop-Browser sieht noch mau aus, aber notfalls mit Shim sollte auch das kein Problem sein.
Hallo,
es soll mindestens eine "1" in dem Inputfeld stehen.
ich würde mir ja wünschen, dass ich die Artikelanzahl auch wieder auf 0 runtersetzen könnte...
Gruß
Kalk
Hi,
es soll mindestens eine "1" in dem Inputfeld stehen.
ich würde mir ja wünschen, dass ich die Artikelanzahl auch wieder auf 0 runtersetzen könnte...
davon bin ich auch ausgegangen, zumal im Thread-Titel die meiner Ansicht nach richtige Variante steht.
Ciao,
Martin