Shopsystem ShopPilot

ShopPilot => ShopPilot Enterprise => Thema gestartet von: dobra am August 11, 2007, 14:53:19

Titel: JS-Problem (Ganzzahlabfrage?)
Beitrag von: dobra am August 11, 2007, 14:53:19
Hallo,

Mein Problem ist zwar kein ShopPilot-Problem, aber vielleicht kann mir trotzdem jemand helfen?

Ich habe das formrequired.js Script ein bißchen umgebaut und mit einer Abfrage, ob die Eingabe eine Zahl ist, ergänzt.
  ...........
var chkZ = 1;
     for (var i = 0; i < elems.length; i++) {
        var elemname = elems[i].name;
        if (elemname.match(/_required$/g)) {
            elemname = elemname.replace(/_required$/, "");
           
            var relems = document.getElementsByName(elemname);
            if (relems.length) {
                if (relems[0].value < "0" ||  relems[0].value > "9") {
                    requiredelems.push(relems[0]);
chkZ = -1;
                }
            }            
        }
    }   

    if (chkZ == -1) {
        for (var i = 0; i < requiredelems.length; i++) {
            requiredelems[i].style.backgroundColor = m_fieldcolor_highlight;
        }
        alert("Die Eingabe im markierten Feld \n ist keine gültige Zahl!");
        return false;
    }
............

Das funktioniert, aber ich komme einfach nicht dahinter, wie ich es machen kann, daß nur Ganzzahlen (also ohne Komma) ein chkZ = 1 bekommen.

Bei meinen - ohnehin sehr komplizierten - Berechnungen (verschachtelt, kombienier, JS und/oder ssp) wäre es wichtig, daß keine Kommazahlen eingegeben werden können, sonst wird das Ergebnis zwar "richtig" berechnet, aber es kommen u.U. Zahlen mit unendlichen Kommastellen heraus.

Beispiel:  so soll es NICHT sein -(http://www.woll-insel.at/Bilder/Komma.gif)  sondern SO (http://www.woll-insel.at/Bilder/ohneKomma.gif)

Wenn ich einfach ein "int" für die Zahlenausgabe schreibe, wird es zwar richtig angezeigt, aber falsch berechnet.
Damit ALLES richtig funktioniert, darf der Kunde keine Kommazahl eingeben können.

Bitte HILFE........

(falls mein Geschreibsel unverständlich war -> Demo http://www.woll-insel.at/cgi-bin/shop2/iboshop.cgi?show1200004850 (http://www.woll-insel.at/cgi-bin/shop2/iboshop.cgi?show1200004850) <- bitte eine Größe wählen und dann mal irgendwelche Kommazahlen im unteren Teil - mit "." nicht "," - eingeben und gucken, was passiert....)
Titel: Re: JS-Problem (Ganzzahlabfrage?)
Beitrag von: admin am August 13, 2007, 22:59:12
Hallo Dorbra,

auf Anhieb weiss ich keine Lösung, vielleicht mal in einem Javascript-Forum fragen.

Gruss hop
Titel: Re: JS-Problem (Ganzzahlabfrage?)
Beitrag von: dobra am August 14, 2007, 10:58:24
Hallo hop;

Zitat
vielleicht mal in einem Javascript-Forum fragen
hatte ich schon gemacht, aber keine brauchbare Antwort erhalten.

Habe jetzt selber nochmal herumgetüftelt und eine andere Lösung gefunden:
Ich frage nicht ab, ob eingegebene Zahl eine Ganzzahl ist und wenn nicht Alertmeldung -
sondern viel einfacher:

Eine Kommazahl wird mit  onKeyUp="checkinput()"  automatisch gleich bei der Eingabe gerundet 
(manchmal denke ich viel zu kompliziert.... :-\ wenn's doch einfach auch geht ;D)

function checkinput() {
    var elems = document.getElementsByTagName("input");
    var requiredelems = new Array();
    for (var i = 0; i < elems.length; i++) {
        var elemname = elems[i].name;
           
            var relems = document.getElementsByName(elemname);
            if (relems.length) {
                  var WertA = Math.round(relems[0].value);
                  var WertB = relems[0].value;
if (WertA != WertB)
relems[0].value = WertA;
}
        }
    }

Das hat auch noch den Vorteil, daß ich das eine Feld, daß ein zulässiges ".5" braucht, dabei auslassen kann.