statt OnFocus >>> OnChange benutzen

Tageslicht

Mitglied
Hallo zusammen habe hier ein kleines script was aus 4 Feldern was zusammen rechnet !

Nun wird da Ergebnis nur angezeigt wenn man in das 5. Feld klickt !

Bekommt man es hin das man das Ergebnis ohne was zu klicken bekommt ?

Ich glaube mit OnChange soll es gehen , aber wenn ja weiss ich nicht wie !

Kann mir wer helfen ?

Code:
<script type="text/javascript">
<!--
function rechne(){
	feld_1 = document.getElementById('X1').value;
	feld_2 = document.getElementById('X2').value;
	feld_3 = document.getElementById('Y1').value;
	feld_4 = document.getElementById('Y2').value;
	
	temp_res1 = Math.pow((feld_1-feld_2),2);
	temp_res2 = Math.pow((feld_3-feld_4),2);
	res = Math.sqrt((temp_res1 + temp_res2));
	res_1 = Math.round((res*15+30));
	document.getElementById('Ergebnis').value = res_1;
}
-->
</script>
<form action="" method="POST">
<div align="center">
<input type="text" id="X1" Value="1" size="2" maxlength="3" style="text-align : center"><br> 
<input type="text" id="Y1" Value="1" size="2" maxlength="3" style="text-align : center"><br>
<input type="text" id="X2" Value="1" size="2" maxlength="3" style="text-align : center"><br> 
<input type="text" id="Y2" Value="1" size="2" maxlength="3" style="text-align : center"><br><br>
<input type="text" id="Ergebnis" Value="" onFocus="rechne()"size="4" style="text-align : center" /readonly>
</div>
</form>


Greez

Tageslicht
 
Packe die ersten vier document.getElementById bla bla in ein praseInt() um sicherzustellen, das die Werte in den Feldern auch wirklich Zahlen werden und hau in jedes input-Feld ein onkeyup rein, dass dann die Funktion aufruft anstelle des onfocus..
 
Zuletzt bearbeitet:
Sorry damit kann ich nun wirklich nichts anfangen !

Ich kenne mich ein wenig mit PHP und Mysql aus aber mit Javascript kein bisschen !

könnte mir wer nen bespiel oder änliches geben ?


danke schön


mfg

Tageslicht
 
Nein, wir sind hier kein Javascript-Krus sondern ein Hilfe-Forum wie du im Thread "Keine Ahnung von Javascript" lesen kannst, und was ich da geschrieben habe ist nun wirklich nicht schwer! Es wird erwartet, dass du zumindest Grundwissen hast und nur bei einemkonkreten Problem Hilfe brauchst. Für alles andere gibt es JS-Kurse und Scriptdatenbanken. Beweis etwas Selbstständigkeit und schau dir die Funktion praseInt() bei selfhtml an, dann schmeißt du den onfocus aus dem readonly-Feld raus und tust onkeyup="rechne()" in alle Inputfelder bis auf das wo du den onfocus rausgeschmissen hast. Man braucht nich JS können um ein einfaches Kochrezept zu befolgen. Ich schreibe dir sicher nicht deine Scripte, denn das wäre Arbeit und keine Hilfe und für Arbeit geibt es Geld und ein Job-Forum hier auf tutorials.de.

Mehr Hilfe bekommst du von mir nicht und denk mal über deinen Ton nach. Du willst Hilfe von mir, nicht umgekehrt.

Edit:
Hat wohl jemand schneller getippt als ich.
 
Zuletzt bearbeitet:
Danke .....


Vergessen wir das ganze und gut ist !

Edit :

Sorry wusste nicht das mein Ton überheblich sei ! Da wollte ich nicht

Mfg

Tageslicht
 
Weil du guten Willen demonstiert hast und ich vielleicht ein bisschen wirsch war, gibt es doch noch die vorgekaute Lösung:
Code:
<script type="text/javascript">
  <!--
  function rechne(){
  	feld_1 = parseInt(document.getElementById('X1').value);
  	feld_2 = parseInt(document.getElementById('X2').value);
  	feld_3 = parseInt(document.getElementById('Y1').value);
  	feld_4 = parseInt(document.getElementById('Y2').value);
  
  // feld_1 = isNaN(a = document.getElementById('X1').value) ? 0 : a;
  // feld_2 = isNaN(a = document.getElementById('X2').value) ? 0 : a;
  // feld_3 = isNaN(a = document.getElementById('Y1').value) ? 0 : a;
  // feld_4 = isNaN(a = document.getElementById('Y2').value) ? 0 : a;
  	
  	temp_res1 = Math.pow((feld_1-feld_2),2);
  	temp_res2 = Math.pow((feld_3-feld_4),2);
  	res = Math.sqrt((temp_res1 + temp_res2));
  	res_1 = Math.round((res*15+30));
  	document.getElementById('Ergebnis').value = res_1;
  }
  -->
  </script>
  <form action="" method="POST"><div align="center">
 	<input type="text" id="X1" Value="1" size="2" maxlength="3" style="text-align : center" onkeyup="rechne()"><br>
 	<input type="text" id="Y1" Value="1" size="2" maxlength="3" style="text-align : center" onkeyup="rechne()"><br>
 	<input type="text" id="X2" Value="1" size="2" maxlength="3" style="text-align : center" onkeyup="rechne()"><br>
 	<input type="text" id="Y2" Value="1" size="2" maxlength="3" style="text-align : center" onkeyup="rechne()"><br><br>
  	<input type="text" id="Ergebnis" Value="" size="4" style="text-align : center" readonly>
  </div>
So, wie es jetzt da steht wird "NaN" (für "Not a Number") im readonly-Feld angezeigt, wenn ein oder mehre andere Felder nicht mit einer Zahl ausgefüllt wurden. Wenn du die Doppelslashes ( // ) vor den vier Zeilen entfernst und alles, was vor den Zeilen in der Funktion steht (die vier Zuweisungen mit feld_1, feld_2 usw.) löscht, wird einfach statt "NaN" anzuzeigen mit 0 als Wert des entsprechenden Feldes weiter gerechnet. Statt 0 kannst du natürlich auch einen anderen Wert nehmen, den dann ein falsch ausgefülltes Feld bekommen soll.

So böse Posts von mir bitte nicht übel nehmen, aber ich will den Leuten einfach einbläuen ihr Hirn und die Suchfunktion zu benutzen, statt die Zeit anderer mit längst beantworteten oder banalen Fragen zu beanspruchen.
 
Zuletzt bearbeitet:
Ich danke dir !

Ich kann Dich gut verstehen , as man erst suchen , selbst test usw soll !

Und glaube mir ich komme mir selber etwas doof vor vorgekautes mir holen zu müssen !

Ich lerne wie oben bereit geschrieben PHP und Mysql und das ist für mich noch etwas schwierig ! Drum wäre Javascript nun auch noch mit bei zu lernen etwas viel glaube ich
( im sinne 3 verschiedene sachen auf einmal )

Aber nun will ich hier kein Roman schreiben ! Ich danke Dir nochmal und werde mich mal mehr anstrengen und mehr suchen !

Dann einen schönen Abend noch ,

Mfg

Tageslicht
 

Neue Beiträge

Zurück