HTML JavaScript dynamische Elemente hinzufügen - Tabelle - weitere Felder - Formular - Zeilen - Zellen
Guten Morgen,
da ich aktuell viel mit JS experimentiere und seit langem eine Lösung für dies suche,
hab ich über Suchmaschinen mal folgende Beispiele gefunden, die funktionieren, ich aber dank der Kenntnisse, keine Erweiterung vornehmen kann.
Siehe hier: http://jsfiddle.net/3rwRH/ (unterer Teil des Beispiels)
http://jsfiddle.net/t5Ayg/ (oberer Teil des Beispiels)
Das obere Skript war ursprünglich dafür gedacht, mehrere Dateien hochzuladen.
Bei dem zweiten werden einfach immer ein Input-Feld angehängt.
Ich suche also folgendes:
Es ist eine Tabelle gegeben, diese hat 5 Spalten und erstmal eine Zeile.
Möchte der Benutzer jetzt aber in dem Auftrag mehr als eine Position haben, könnte man weitere Zeilen über JS nachladen / generieren.
Alternativ hätte ich jetzt gedacht, dass vorher gefragt wird, wie viele Zeilen benötigt werden, diese dann erzeugt werden.
Die zweite Möglichkeit find ich aber nicht so WEB 2.0 freundlich. Man denke jetzt einfach mal an die GUI von GMail! (...)
Vielleicht weiß jemand, wie es klappt (...)
Grüße
Euer Midivirus
Quellen:
http://www.mediengestalter.info/forum/10/javascript-neue-formularfelder ...
da ich aktuell viel mit JS experimentiere und seit langem eine Lösung für dies suche,
hab ich über Suchmaschinen mal folgende Beispiele gefunden, die funktionieren, ich aber dank der Kenntnisse, keine Erweiterung vornehmen kann.
<HTML>
<HEAD>
<script src="jquery-1.2.1.pack.js" type="text/javascript"></script>
<script>
$(document).ready(function(){
$('.mehr').click(function(){
$(".submit").before('<TR><TD>Spalte1 mit JS</TD><TD>Spalte2 mit JS</TD></TR>');
})
});
</script>
</HEAD>
<BODY>
<TABLE border>
<TR>
<TD>spalte1</TD><TD>Spalte2</TD>
</TR>
<TR>
<TD><a href="#" class="mehr">Mehr!</a></TD><TD><input type="submit" class="submit" value="Senden" /></TD>
</TR>
</TABLE>
<XMP>
<?PHP
print_r($_POST);
?>
</XMP>
</BODY>
</HTML>
http://jsfiddle.net/t5Ayg/ (oberer Teil des Beispiels)
Das obere Skript war ursprünglich dafür gedacht, mehrere Dateien hochzuladen.
Bei dem zweiten werden einfach immer ein Input-Feld angehängt.
Ich suche also folgendes:
Es ist eine Tabelle gegeben, diese hat 5 Spalten und erstmal eine Zeile.
Möchte der Benutzer jetzt aber in dem Auftrag mehr als eine Position haben, könnte man weitere Zeilen über JS nachladen / generieren.
Alternativ hätte ich jetzt gedacht, dass vorher gefragt wird, wie viele Zeilen benötigt werden, diese dann erzeugt werden.
Die zweite Möglichkeit find ich aber nicht so WEB 2.0 freundlich. Man denke jetzt einfach mal an die GUI von GMail! (...)
Vielleicht weiß jemand, wie es klappt (...)
Grüße
Euer Midivirus
Quellen:
http://www.mediengestalter.info/forum/10/javascript-neue-formularfelder ...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 170859
Url: https://administrator.de/contentid/170859
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo,
wir hatten ja schonmal das vergnüen ;)
Als erstes würde ich mich entscheiden was du nutzt, du mischst dort Jquery mit "reinem" javascript.
Die Zeile z.B. kannste auch mit Jquery wieder verkürzen. Funktioniert so war auch aber es wird dadurch extrem unübersichtlich.
Du möchtest also einen Link wenn man drauf klickt ein weiteres Input element erstellen?
Kein Problem. Ein Beispiel haste doch schon gefunden.
Ich habe noch ein einfaches Beispiel erstellt, vielleicht kommst du damit besser zurecht (form element fehlt, sollte ja schnell gehen;)).
Nach den klick auf "Mehr!" erstelle ich vor dem submit Button einfach ein neues Input Element.
wir hatten ja schonmal das vergnüen ;)
Als erstes würde ich mich entscheiden was du nutzt, du mischst dort Jquery mit "reinem" javascript.
var y = document.getElementsByTagName('input');
Du möchtest also einen Link wenn man drauf klickt ein weiteres Input element erstellen?
Kein Problem. Ein Beispiel haste doch schon gefunden.
Ich habe noch ein einfaches Beispiel erstellt, vielleicht kommst du damit besser zurecht (form element fehlt, sollte ja schnell gehen;)).
Nach den klick auf "Mehr!" erstelle ich vor dem submit Button einfach ein neues Input Element.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<script type="text/javascript" src="jquery.js" ></script>
<script>
$(document).ready(function(){
$('.mehr').click(function(){
$(".submit").before('<br/><input type="text" class="neues_input" value="neues_input" />');
})
});
</script>
</head>
<body>
<a href="#" class="mehr">Mehr!</a>
<div>
<input type="text" class="first_input" value="Erstes Input" />
<input type="submit" class="submit" value="Senden" />
</div>
</body>
</html>
Hallo,
der Selektor ist auch falsch. Weil du dein Link und Button auch in der Tabelle hast muss die Zeile nicht mehr nach dem letzten td "$('tr_last').after" sondern du willst es davor haben.
Also heißt es nicht mehr "after" sondern "before" weil du deine Zeile ja davor haben möchtest.
Klar, before und after machen nichts anderes als HTML(). Nur mit der Anweisung noch ob du den Code vor einem Element oder nach einem Element haben möchtest. HTML würde direkt in das Element schreiben.
der Selektor ist auch falsch. Weil du dein Link und Button auch in der Tabelle hast muss die Zeile nicht mehr nach dem letzten td "$('tr_last').after" sondern du willst es davor haben.
Also heißt es nicht mehr "after" sondern "before" weil du deine Zeile ja davor haben möchtest.
Klar, before und after machen nichts anderes als HTML(). Nur mit der Anweisung noch ob du den Code vor einem Element oder nach einem Element haben möchtest. HTML würde direkt in das Element schreiben.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<script type="text/javascript" src="jquery.js" ></script>
<script type="text/javascript">
$(document).ready(function(){
$('.mehr').click(function(){
$("tr:last").before(
'<tr>'+
'<td>Spalte 1 JS</td>'+
'<td>Spalte 2 JS</td>'+
'</tr>'
);
})
});
</script>
</head>
<body>
<a href="#" class="mehr">Mehr!</a>
<div>
<TABLE>
<TR>
<TD>Spalte1</TD>
<TD>Spalte2</TD>
</TR>
<!-- JS Zeilen ... -->
<TR>
<TD><a href="#" class="mehr">Mehr!</a></TD>
<TD><input type="submit" class="submit" value="Senden" /></TD>
</TR>
</TABLE>
</div>
</body>
</html>