• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Exception Abfragen

Status
Für weitere Antworten geschlossen.

marco9

Neues Mitglied
Morgen Leute,

ich hab ein Problem, und zwar habe ich ein Textfeld mit dem Namen "umsatz" wo der Kunde einen Umsatz eingeben soll (was alles noch gut läuft, jetzt zum Problem):

Anschließend soll eine JavaScript Methode überprüfen ob der Kunde eine Zahl oder einen Namen (blödes Beispiel: Hugo) eingegeben hat.
Bei einem Namen soll eine Fehlermeldung kommen bzw. rot hinterlegt sein.

Hab nach langem googlen nichts gefunden, deswegen frage ich mal hier!

hier mein code der Methode, welche nicht läuft:
function checkUmsatz()
{
var test = document.testForm.umsatz.value;

try{
int umsatz = parseInt(test);
document.write(test.toLocaleString());
}catch(err){
document.write("Falsche Eingabe -> Umsatz!");
}
 
Werbung:
Du könntest beim onkeypress von dem input abfragen, ob eine Zahl oder etwas anderes eingetragen wird und nur dann eintragen.
Dann bräuchtest Du keine extra Funktion die erst beim Submit testet.

So in der Art:
Code:
onKeyPress="if ((event.which > 57) ||
(event.which < 48)){return false};">

So nimmt das Feld nur Zahlen an, aber es funktionieren die Tasten Return, Backspace, usw nicht mehr. Die musste natürlich noch freigeben ;-)


Viele Grüße
Daniel
 
Hi.
Also zu der 3. zeile erst mal etwas. In der Regel macht man das nicht mehr so. Funktionietr auch garantiert nicht bei allem Browsern das mit der Punktierung um an Elemente ranzukommen

Code:
var test = document.testForm.umsatz.value;

// wäre dann so etwas wie:

var test = document.getElementById("umsatz").value;
Nun abe rzu deiner Abfrage. parseInt schmeisst keinen Fehler wenn er keine Nummer vor sich hat sondern ein NaN. ( Not a Number)
Hierfür gibt es die Funktion isNaN(nummer) welche true oder false zurück gibt.

also könnte man so etwas machen wie
Code:
if( isNaN(parseInt(test) ) {
  // schmeisse Fehler
} else {
  // Fahre fort mit dem anderen Code
}

dafür einmal hier gucken:
JavaScript isNaN() Function
und wegen parseInt() hier:
JavaScript parseInt() Function
 
Werbung:
danke nun Value von Button ändern

Ok erstmal dankeschön für die Hilfe das mit isNaN()
hat wunderbar funktioniert!!!

nun habe ich aber einen button mit einem Value ("Speichern"), die Value (ist eine Java Methode im Front Controller) soll aber nur ausgeführt werden, wenn es eine nummer ist?

wie kann ich da eine andere Value setzten, wenn es keine nummer ist??

gruß
 
Die gibts dem button eine id wie: speicherButton.
die value dieses buttons setzt du dann dementsprechend so:

Code:
document.getElementById("speicherButton").value = "Neue Value";

Viel Spaß damit :)
 
seite beibehalten

ok geht auch super, vielen dank!!:razz::oops:

aber wie kann ich bei dem button klick sagen (der button save) dass er im JAVA nicht die methode speichern ausführt, sondern nichts macht außer den allert von mir und auf der Seite bleibt??

letzte frage von meiner Seite^^
 
Werbung:
hier einmal dein kompletter Quellcode bearbeitet

Code:
function checkUmsatz()
{
var test = document.getElementById("umsatz").value;
var umsatz = parseInt(test);
if(isNaN(umsatz)) {
 document.write("Falsche Eingabe -> Umsatz!");
 // besser wäre so etwas wie
 // document.getElementById("error").innerHTML = "Falsche Eingabe -> Umsatz!";
} else {
  document.write(test.toLocaleString());
  // auch hier wäre besser so etwas wie
  // document.getElementById("ausgabe").innerHTML = test.toLocaleString();
}
 
ok

ja danke,
der Quellcode passt, aber ich versteh nicht wo da das mit dem Button ist?
muss ich da statt "error" den namen meines Buttons einfügen?
 
Geht nichts mehr^^

function checkUmsatz(){
{
var test = document.getElementById("umsatz").value;
var umsatz = parseInt(test);
if(isNaN(umsatz) == true){
alert("Fehler Umsatz!");
}else{

}
}

Wieso macht die methode jetzt gar nichts mehr?
nicht mal mehr ne Fehlermeldung bei Eingabe von Buchstaben???
 
Werbung:
Da war eine Klammer zu wenig ^^
hier mal das Beispiel komplett
HTML:
<html>
    <head>
        <script>
        
            function checkUmsatz()
            {
                document.getElementById("saveButton").value = "Ausgabe";
                var test = document.getElementById("umsatz").value;
                var umsatz = parseInt(test);
                if(isNaN(umsatz)) {
                 //document.write("Falsche Eingabe -> Umsatz!");
                 // besser wäre so etwas wie
                 document.getElementById("saveButton").value = "Falsche Eingabe -> Umsatz!";
                } else {
                 // document.write(test.toLocaleString());
                  // auch hier wäre besser so etwas wie
                   document.getElementById("ausgabe").innerHTML = umsatz.toLocaleString();
                }
            }
        

        </script>
    </head>
    <body>
        <div id="ausgabe"></div>
        <input type="text" id="umsatz" />
        <input type="button" id="saveButton" onclick="checkUmsatz()" value="Ausgabe" />
    </body>
</html>
 
@Gilles

Hey erstmal danke, das funktioniert, ich probier seit 7 rum in der Arbeit damit^^!

jetzt soll es nur so sein, wenn denn eine richtige Zahl eingegeben wird soll ehr eine Java methode ausführen im Frontcontroller!?
 
Werbung:
ok

pardon, das funktioniert!

gibt es in JavaScript ne methode, dann zum Umsatzfeld hinzuscrollen und das rot zu hinterlegen, bei falscheingabe??

sorry die vielen blöden fragen bin aber erst azubi und wurde mit JavaScript ins kalte wasser geschmissen^^
 
https://developer.mozilla.org/en/DOM/element.scrollIntoView

className auf "error" oder sowas setzen und im CSS das Feld als rot definieren.

Für andere Browser, welche kein scrollIntoView kennen musste du etwas mit scrollY und diesem bauen:
Code:
function getRealPos (element) {
    var x = 0, y = 0, tmp_ele = element, pos;
    for (; tmp_ele != null; x += element.offsetLeft, y += element.offsetTop, tmp_ele = tmp_ele.offsetParent) {
        pos = getRealPos.get_pos(tmp_ele);
        x -= parseInt(pos.x);
        y -= parseInt(pos.y);
    }
    return { x : x, y : y, w : element.offsetWidth, h : element.offsetHeight };
}
getRealPos.get_pos = document.defaultView ? function (obj) {
    var obj_style = obj.ownerDocument.defaultView.getComputedStyle(obj, null);
    return {
        x : obj_style.getPropertyValue("left"),
        y : obj_style.getPropertyValue("top")
    };
} : document.currentStyle ? function (obj) {
    return {
        x : obj.currentStyle.left,
        y : obj.currentStyle.top
    };
} : function (obj) {
    return {
        x : obj.style.left,
        y : obj.style.top
    };
};
 
Seite beibehalten

Ja das ist ja sehr gut, genau das brauche ich, aber es geht leider nicht da wenn ich den button klicke er immer die Methode in Java ausführt welche die Eingaben speichert!
wie kann ich das machen, dass bei falscher eingabe in dem Feld ich auf der Seite bleibe und beim Click auf den Button nicht weiter springe auf die nächste Seite?
 
Werbung:
Bei onsubmit das Event canceln. Also so:
Code:
<form onsubmit="return checkForm()">
checkform() muss dann true/false liefern, was angibt ob alles ok ist.
 
danke

ok schonmal danke im vorraus,

aber wo muss ich das denn einbauen??
muss ich die Methode noch schreiben??


gruß Marco
 
Ja musst du selbstverständlich. Sie muss an sich nichts anderes machen, als alle Methoden die etwas überprüfen aufzurufen und zu prüfen, was diese zurückgeben. checkUmsatz() müsste im Fehlerfall also false liefern.
 
Werbung:
ok

ja das ist mir schon klar, aber im Hintergrund im Frontcontroller wird automatisch eine java-methode auf gerufen wenn der actionName gleich berichtSpeichern ist. wie kann ich denn den actionName ändern, weil den hab ich nirgends angegeben!!!!!!!!!!!!!!
das wäre schon die lösung!
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben