Wert eines INPUT mitvererben

newbi_1

Mitglied
Hallo,
ich bastle immer noch an meinem Code
PHP:
<script type="text/javascript">
  function clone_this(btn){
    tbl=btn.parentNode.parentNode.parentNode;
    tbl.insertBefore(tbl.rows[tbl.rows.length-2].cloneNode(true),tbl.rows[tbl.rows.length-1]);
    
  }
function checkWERT(e) {
  if(e.value.length) 
  {
    if (!e.value.match(/^[\s\<]+$/)) {
		alert("Nur folgendes Zeichen '<' oder Leerzeichen ist  erlaubt");
		setTimeout(function(){wert1.parentNode.parentNode.getElementsByTagName('input')[0].focus()}, 100);
		return false;
    } 
    else 
    { 
		e.parentNode.parentNode.getElementsByTagName('input')[2].disabled = true;
		e.parentNode.parentNode.getElementsByTagName('input')[3].disabled = true;
		setTimeout(function(){e.parentNode.parentNode.getElementsByTagName('input')[1].focus()}, 10);
		return ;
    }
  } else {
		e.parentNode.parentNode.getElementsByTagName('input')[2].disabled = false;
		e.parentNode.parentNode.getElementsByTagName('input')[3].disabled = false;
		//setTimeout(function(){messwert.focus()}, 100);
		setTimeout(function(){e.parentNode.parentNode.getElementsByTagName('input')[1].focus()}, 10);
		return true;
  }
}  
</script>
<FORM  ACTION='ausgabe.php' METHOD='POST' NAME='Eingabeformular' >
  <DIV id="new_row"><TABLE  cellspacing="0" border="1" name="cloneTable"> 
   <TR>
    <TH colspan=6>Bitte Werte eingeben</TH>
   </TR>
   <TR>
    <TH>Gr&ouml;sse</TH>
    <TH>Wert 1</TH>
    <TH>Wert 2</TH>
    <TH>Wert 3</TH>
    <TH>Relmess</TH>
    <TH>Wert 4</TH>
  </TR>
  <TR>
    <TD>
      <SELECT>
        <OPTION>[bitte w&auml;hlen]</OPTION>
        <OPTION>1</OPTION>
        <OPTION>2</OPTION>
      </SELECT>
    </TD>
    <TD><INPUT name="wert1[]" onblur="checkWERT(this)"></TD>
    <TD><INPUT name="wert2[]"></TD>
    <TD><INPUT name="wert3[]"></TD>
	<TD><INPUT NAME='relmess[]'></TD>
    <TD><INPUT name="wert4[]"></TD>
  </TR>
  <TR>
    <TH colspan=6>
      <INPUT type="submit"/>
      <INPUT value=" Werte eingeben " onclick="javascript:clone_this(this, 'new_row');" type="button"/>
    </TH>
  </TR>
</TABLE> 
</FORM>
Ich habe eine Tabelle, in die Werte eingegebn werden sollen. Es wird eine Zeile dazugeklont, beim Drücken des Button "Werte eingeben".
Das Programm sollte in allen Browsern laufen.

Unterschiedliches Verhalten zeigt sich leider bei der Werteingabe. Habe ich einen Wert eingegeben und klicke dann auf "Werte eingeben", werden im IE die Werte der Zeile mitgeclont. Dies passiert auch im Firefox. Mozilla zeigt immer neue leere Zeilen an.

Ich würde aber gerne expliziet den Wert der Tabellenspalte " Wert 4" mit vererben, die anderen Zeilen sollten aber leer sein.
Vielleicht kann mir ja jemand helfen ;) Wäre super!! Danke im voraus
 
Hi,

folgende Vorgehensweise sollte dich zum Ziel bringen:
  1. Ermittel mit getElementsByTagName alle input-Elemente im geklonten Element
  2. Durchlaufe die ermittelten Elemente in einer for-Schleife
  3. Prüfe jedes Element, ob es sich um ein Textfeld handelt (type=='text') UND dass es nicht den Name wert4[] besitzt
  4. Ist die Prüfung erfolgreich, übergibst du einen Leerstring an die value-Eigenschaft
Vielleicht hilft dir das weiter.

Ciao
Quaese
 
Nein ich kanns nicht. Mit dem ersten Versuch habe ich die Werte der ersten Zeile verloren....
Mit dem zweiten Versuch wird nix mehr geklont ...

Vielleicht hast du ein Programmschnipsel ? :confused:

Hab gestern und heute schon verzweifelt probiert!.:(:(:(
Danke im voraus
 
Hi,

so könnte es aussehen:
Code:
function clone_this(btn){
  tbl=btn.parentNode.parentNode.parentNode;
  // Knoten klonen
  var objNode = tbl.rows[tbl.rows.length-2].cloneNode(true);
  // 1. Alle Inputs ermitteln
  var arrInput = objNode.getElementsByTagName("input");
  // 2. Elemente in for-Schleife durchlaufen
  for(var i=0; i<arrInput.length; i++){
  	// 3. Jedes Element prüfen, ob es sich um ein Textfeld handelt (type=='text') UND dass es nicht den Name wert4[] besitzt
  	if((arrInput[i].type == "text") && (arrInput[i].name!="wert4[]")){
    	// 4. Leerstring an die value-Eigenschaft
    	arrInput[i].value = "";
    }
  }
  tbl.insertBefore(objNode, tbl.rows[tbl.rows.length-1]);
}

Ciao
Quaese
 
Zurück