felder mit link verändern

Netdeus

Grünschnabel
Hi;

bin leider mehr als nur Anfänger auf dem Bereich Javascript - daher meine Frage, ob ihr mir vielleicht helfen könntet.

Ich habe ein Formular (html / php) in dem mehrere Felder auftauchen, die von einander in gewisser Weise abhängig sind.

1. Feld beinhaltet eine Zahl (z.B. 70)
darunter sind mehrere Felder auf denen diese Punkte aufgeteilt werden können. Bei jedem Feld brauche ich somit Zwei Links. Auf dem einen soll die Zahl des entsprechenden Feldes erhöht, auf dem anderen gesenkt werden. Dabei soll der Wert des ersten Feldes angepasst werden.

Beispiel:

Feld A (70)
Feld B (0)
Feld C (0)

Klick neben Feld B -->
Feld A (69)
Feld B (1)
Feld C (0)

Klick neben Feld C -->
Feld A (68)
Feld B (1)
Feld C (1)

Klick neben Feld B <--
Feld A (69)
Feld B (0)
Feld C (1)

Vielen Dank schon jetzt für eure Hilfe.
 
Wenn ich dein Vorhaben richtig verstanden habe, sollte dies es tun:
Code:
    <div class="wrappernr">
        <input class="nrtotal" value="70">
        <div class="group">
            <img class="down" src="images/buttondown.png">
            <input class="nrgroup" value="0">
            <img class="up" src="images/buttonup.png">
        </div>
        <div class="group">
            <img class="down" src="images/buttondown.png">
            <input class="nrgroup" value="0">
            <img class="up" src="images/buttonup.png">
        </div>
        <div class="group">
            <img class="down" src="images/buttondown.png">
            <input class="nrgroup" value="0">
            <img class="up" src="images/buttonup.png">
        </div>
    </div>
    <script>
        function initNumbers(sel) {
            $(sel).each(function(idx, item) {
                var total = $(item).find(".nrtotal");
                $(item).find(".down").on("click", function() {
                    nrgroup = $(this).next(".nrgroup");
                    if (nrgroup.val() > 0 ) {
                        nrgroup.val(parseInt(nrgroup.val()) - 1);
                        total.val(parseInt(total.val()) + 1);
                    }
                });
                $(item).find(".up").on("click", function() {
                    nrgroup = $(this).prev(".nrgroup");
                    if (total.val() > 0 ) {
                        nrgroup.val(parseInt(nrgroup.val()) + 1);
                        total.val(parseInt(total.val()) - 1);
                    }
                });
            });
        }
        initNumbers(".wrappernr");
    </script>
Das Skript benutzt jQuery, vergiss nicht, das einzubinden.
Ich wusste nicht genau, was das für Felder sein sollen, habe mal Inputs genommen.
 
Vielen Dank - das Script funktioniert schon fast.

Ja, es sollten Input Felder sein (nehme hier aber auch jede Alternative)

Leider ist das Script aber SEHR einfach auszuhebeln. Man müsste noch dafür sorgen, dass man NUR über die Buttons (Pfeile) die Daten ändern kann und man nicht zusätzlich das Input- Feld einfach mit einer anderen Zahl füllen kann.

Die Gesamtanzahl aller Input Felder sollte ja der des Hauptfeldes entsprechen.

Nachtrag - ok, hab ich einfach auf "readonly" gesetzt. Das löst mein ganzes Problem
 
Zurück