Input-Text Felder mit wechelnder aktualisierung

Commu

Mitglied
Hallo Zusammen.

HTML:
<html>
  <head>
  <title>Zeitberechnung</title>
  <script type="text/javascript">
  function Hour(){
  var wert = string2seconds(arguments[0]);
  // ist der Kontext ein String, dann ist das Objekt ein formatierter String
  this.toString = function() {
  return '' +seconds2string(wert);
  };
  // ist der Kontext kein String, dann ist das Objekt eine Zahl
  this.valueOf = function() {
  return wert;
  };
  this.set = function(s) {
  wert = s;
  return this;
  };
  // private functions
  function seconds2string(n) {
  var n = wert;
  var sign = n < 0 ? '-' : '';
  n = Math.abs(n);
  var h = parseInt(n / 3600);
  var m = parseInt((n / 60 ) % 60);
  var sec = parseInt(n % 60);
  return sign + frmt(h) + ':' + frmt(m) + ':' + frmt(sec);
  }
  function string2seconds(n) {
  if(!n) return 0;
  var tmp = n.split(':');
  if(!tmp.length) tmp[0] = 0;
  if(tmp.length < 2) tmp[1] = 0;
  if(tmp.length < 3) tmp[2] = 0;
  while(tmp[2] > 59) {
  tmp[2] -= 60;
  ++tmp[1];
  }
  while(tmp[1] > 59) {
  tmp[1] -= 60;
  ++tmp[0];
  }
  return (tmp[0] * 3600 + tmp[1] * 60 + 1 * tmp[2]);
  }
  function frmt(n) { return n < 10 ? '0' + n : n;}
  }
  Hour.prototype = {
  add: function(time) {
  return new Hour().set(this + time );
  },
  sub: function(time) {
  return new Hour().set(this - time);
  },
  hour: function() {
  var tmp = this.toString().split(':');
  return tmp[0] * 1 + tmp[1] / 60 + tmp[2] / 3600;
  }
  };
  String.prototype.hour = function() { return new Hour(this);}
  </script>
  </head>
  <body>
  <h3>Zeitberechnung</h3>
  <form>
  <pre>
  Zeit von: <input name="von" onChange="calc(this.form)" value="8:00" /> <br />
  Zeit bis: <input name="bis" onChange="calc(this.form)" value="13:00" /> <br />
  <br />
  Stunden = <input name="sub" onChange="calc(this.form)" value="5" /> <br />
  </pre>
  </form>
  <script type="text/javascript">
  function calc(f) {
  var von = new Hour(f.von.value);
  var bis = new Hour(f.bis.value);
  var std = bis.sub(von);
  f.sub.value = std.hour();
  }
  </script>
  </body>
</html>

in dem oben beschriebenen Formular gibt es 3 Input Felder (von , bis und std ) .
aktueller Status ist, wenn ich die felder von und/oder bis ändere wird in std die Stunden in Dezimal angegeben.
ich möchte eine erweiterung, wenn ich die std ändere, soll auch das bis angepasst werden.
ist das möglich?

Gruß Jörg
 
Zuletzt bearbeitet von einem Moderator:
Zurück