Frage zur Ausgabe eines Wertes

  • Hallo ich hab heute angefangen mir eine Seite zu erstellen die zur Berechnung eines Wertes gedacht ist, dies ist der Code:
    <!DOCTYPE HTML>


    <html>


    <head>
    <title>Untitled</title>
    </head>


    <body>


    </body>
    <form oninput="isk.value = fracht.value * 500">


    Frachtgroesse<br>
    <input type="text" id="fracht"><br>
    <input type="reset" value="Löschen" />
    <br>
    Isk zu zahlen:<br>
    <output name="isk"></output>


    </form>




    </html>
    Es funktioniert soweit ganz gut man gibt den Wert oben ein und er wird mal 500 multipliziert so wie ich es möchte. Allerdings sieht die ausgabe so aus: z.b 100000 ich möchte aber gerne das er es mit Punkt oder Komma ausgibt also z.b. so 100.000. wie stelle ich das an?. Schön wäre auch wenn man das Ergebnis in einem Feld wie dem Input oben hätte damit man das Ergebis einfach per Copy and Paste nutzen kann.


    Desweiteren möchte ich gerne (vermutlich mit if else) das wenn das Ergebnis eine Gewisse Größe Über oder Unterschreitet ein Vordefinierter Text als Hinweis kommt.


    Leider sind meine Php Kenntnisse gar nicht so gut und ich bin daher auf eure HIlfe angewiesen.


    P.S. der Code is net wirklich php ich weies ist aus einem html5 Tutorial aber es funktioniert :O)



    mfg Tele

  • Nein, das hat mit PHP wirklich nichts zu tun. Versuche dieses:

  • Der Quellcoe sieht so aus:



    <html>


    <head>
    <title>Untitled</title>
    </head>


    <body>


    </body>
    <form oninput="isk.value = fracht.value * 500">


    Frachtgroesse<br>
    <input type="text" id="fracht"><br>
    <input type="reset" value="Löschen" />
    <br>
    Isk zu zahlen:<br>
    <output name="isk"></output>
    <?php
    <script>var test = "500000,777";
    var test2 = "2000.777";
    function convert(str) {
    str = str.replace(",", ".");
    str = parseFloat(str).toFixed(2);
    var pos = str.indexOf(".");
    str = str.replace(".", ",")
    var result = "";
    var i = 0;
    do {
    result += str[i];
    i++;
    if (((pos - i) % 3) == 0) result += "."
    } while (i < pos - 1)
    for (; i < str.length; i++) result += str[i];
    return result;
    }
    console.log(convert(test));console.log(convert(test2));</script>


    >
    </form>




    </html>

  • Du öffnest zwar mit "<?php" einen Abschnitt mit PHP-Code, schließt ihn aber nicht ab.
    Das Skript, das ich gepostet hatte, ist Javascript, kein PHP. Du kannst dieses nicht einfach in einen Abschnitt mit PHP einfügen.
    Du hast mein Skript unverändert eingefügt. Du musst jedoch den Aufruf der Funktion convert() in dein Javascript integrieren.
    Wenn ich das richtig sehe, brauchst Du überhaupt kein PHP für das, was Du vor hast.


    Am besten postest Du mal deinen kompletten Code, bevor Du mein Skript eingefügt hast. HTML und Javascript mit dieser Berechnung.

  • PS: Ich sehe gerade, dass Du deinen bisherigen Code ja schon in deinem Eingangsposting gepostet hast. Du müsstest diesen folgender Maßen erweitern:

    Wenn Du die Ausgabe in deutschem Format machst, wäre es vielleicht angebracht auch die Eingabe mit Komma zu ermöglichen.

  • Zitat

    Wo gebe ich denn ein ab Welchen Wert er Meldung X generiert? bzw kann ich das auch schon so machen das er bereits in der Eingabe meckert?

    Das verstehe ich nicht ganz: Was meinst Du mit "Meldung X"? Möchtest Du die Eingabe überprüfen, d. h. testen, ob das Format stimmt (nur Ziffern und ein Komma)?

  • Nein das macht er von alleine wenns net passt kommt da irgendwie NaN. Es Soll noch ein 2tes Eingabefeld hin und je nachdem wie hoch der Wert ist zb über 1.000.000.000. soll eine Meldung generiert werden in der Steht Man muss Betrag X Zahlen oder Wenn der Wert Über 2.000.000.000. Ist kommt Halt Betrag Y dazu.

  • Habe es jetzt mal so implementiert, wie ich es verstanden habe. Außerdem habe ich für das Eingabefeld eine saubere Validierung eingebaut. Prüfe mal, ob es das ist, was Du dir vorgestellt hast.

  • Ok ich ha mich wohl bissel schelcht ausgedrück. ich habe unterhalb deines Codes diese Zeile eingefügt
    <input type="text" id="fracht" pattern="[1-9][0-9]*(,[0-9]+)?"><br>
    Damit hab ich ein neues Eingabe feld Geschaffen. Nun möchte ich wenn man dort eine Zahl eingibt danach die Meldung wie bei dem Ersten Feld aus deinem Code Generiert wird:


    Also Gibt man einen Wert ein und je nach Größe des Wertes kommt Meldung 1. 2. oder 3 zb

  • Soll das jetzt die frühere Abfrage nach dem Wert und die Ausgabe von Meldungen ersetzen?

    HTML
    1. Fracht: <input type="text" id="fracht" pattern="[1-9][0-9]*(,[0-9]+)?" oninput="inputFracht(this);"> <output id="fracht-msg"></output>


    Wenn es noch mehr Abstufungen für die Werte geben soll, müsste man das besser auf ein Array umstellen.
    Das Forum verschluckt z. T. die Zeilenumbrüche. Scrolle im HTML nach rechts.

  • Ich hab dein Code wahrscheinlich falsch eingefügt mal wieder bekomme nur Fehler Meldung.


    Aber ich glaube wir stückeln uns aneinander Vorbei :O)


    also hie rist die Datei mit deinem Quellcode : http://planetsmc.de/hunter/jfneu.html


    Das Obere Eingabe Feld passt Super und soll so bleiben wie es ist. Das 2te Neue Feld soll nur ein Eingabefeld sein und je nachdem welche Zahl man eingibt soll halt eine Meldung von ca 3 meldungen generiert werden.


    Optimalerweise Wird dann das Ergebniss von Oben, also die Zahl die hinter ISk Zahlen erscheint, mit der Zahl welche in der Meldung aus dem 2ten Feld Generiert wird (eine dieser 3 Optionen) addiert und in einem 3 ten Feld Ausgegeben damit man die Zahl direkt per Copy and Paste verwenden kann (ist kein Muss wenn es nicht geht muss man normal kopieren halt)


    Hoffe du weisst jetzt was ich meine.


    Hier der Komplette Code der Html den ich von dir verwendet habe


    <!DOCTYPE HTML>


    <html>


    <head>
    <title>Untitled</title>
    </head>
    <script> function convert(val) {
    var msgAbove = "Zu Groß";
    var msgBelow = "Perfekt";
    var limit = 150000000;
    val = (val.replace(",", ".") * 500).toFixed(2);
    var msgfield = document.getElementById("zuzahlen");
    if (val > limit) msgfield.innerHTML = msgAbove; else msgfield.innerHTML = msgBelow;
    str = val.toString().replace(".", ",");
    var pos = str.indexOf(",");
    var result = "", i = 0;
    do {
    result += str;
    i++;
    if (((pos - i) % 3) == 0) result += "."
    } while (i < pos - 1)
    for (; i < str.length; i++) result += str[i];
    return result;
    }
    </script>
    <form oninput="isk.value = convert(fracht.value);">
    Frachtgroesse<br>
    <input type="text" id="fracht" pattern="[1-9][0-9]*(,[0-9]+)?"><br>
    <input type="reset" value="Löschen" />
    <br>
    Isk zu zahlen:<br>
    <output id="isk"></output>
    <output id="zuzahlen"></output>
    </form>
    <style>
    #fracht:invalid {
    border: 2px solid red;
    } </style>
    <input type="text" id="fracht" pattern="[1-9][0-9]*(,[0-9]+)?" oninput="inputFracht(this);"> <output id="fracht-msg"></output>



    <body>


    </body>


    </html>



    mfg Tele[/i]

  • Dein Fehler ist offenbar, dass Du die Funktion inputFracht nicht in das Javascript übernommen hast.
    Wenn Du Code postest, solltest Du die Code-Buttons in der Werkzeugleiste oberhalb des Eingabefeldes für eine Antwort verwenden: #, <?, SQL, CSS, <>, JS.
    In deinem letzten Posting wurde das

    Code
    1. [i]

    als BB-Code für Italic interpretiert und verschluckt - etwas, das häufig vorkommt, wenn keine Code-Tags verwendet werden.


  • also das ist der Code, so hab ich ihn aus dem Forum kopiert