Skeeve: Javascript & Formular & Array

Beitrag lesen

Moin!

Keine Ahnung, ob es Dir was nutzt, aber man könnte das zum Beispiel so lösen, daß man den Eingabefeldern denselben Namen gibt. Sie lassen sich dann per getElementByName auffinden. Wenn der Name dann noch eine Zahl enthält und das Ergebnisfeld dieselbe Zahl bekommt, kann man das so implementieren:

  
<html>  
<head>  
<script language="JavaScript" type="text/JavaScript" >  

  
function numerisch(feld)  
{  
 if(feld.value == "")  
  return  
  
 // Feld analysieren  
 var test = parseFloat(feld.value)  
  
 // OK? Dann zurueck!  
 if(!isNaN(test))  
 {  
  // Ergebnis darstellen  
  feld.value = test  
  
  return  
 }  
  
 // Fehlermeldung  
 alert("Bitte nur numerische Angaben!")  
  
 // Eingabe selektieren und Eingabefokus setzen  
 feld.select()  
 feld.focus()  
}  
  
function rechne(feld)  
{  
 var felder= document.getElementsByName( feld.name );  
 var produkt= 1;  
 for (var i=felder.length; i--; ) {  
  produkt*= felder[i].value;  
 }  
  
 var ergebnisName= feld.name.replace( /^\D+/, 'ergebnis' );  
 var ergebnis= document.getElementsByName( ergebnisName ).item(0);  
 ergebnis.value= produkt;  
}  

  
</script>  
</head>  
<body>  
<form>  
<table border="0" cellspacing="0" cellpadding="0">  
  <tr>  
    <td><input type="text" name="zeile1"  
       onChange="numerisch(this); rechne(this)" /></td>  
    <td><input type="text" name="zeile1"  
       onChange="numerisch(this); rechne(this)" /></td>  
    <td><input type="text" disabled="disabled" name="ergebnis1" /></td>  
  </tr>  
  <tr>  
    <td><input type="text" name="zeile2"  
       onChange="numerisch(this); rechne(this)" /></td>  
    <td><input type="text" name="zeile2"  
       onChange="numerisch(this); rechne(this)" /></td>  
    <td><input type="text" disabled="disabled" name="ergebnis2"/></td>  
  </tr>  
</table>  
</form>  
</body>  
</html>

Man könnte natürlich auch vom übergebenen Feld die Parent Row ermitteln, d.h. so lange im DOM Tree hoch gehen, bis man di ROW hat und dann, ausgehend davon die Eingabefelder suchen. Dann wären die Namen vollkommen egal.
-- Skeeve