Mehrere Felder in die Zwischenablage kopieren?

zaheer

Grünschnabel
hallo,

ein Textfeld auslesen kein Problem, aber wie siehts aus wenn ich ein Formular mit 20 Feldern hab und jetzt aus diesen 20 Feldern die 5 kopieren will, welche die Anschrift bilden?

Also durch ein klick auf einem button 5 felder in die zwischenablage kopieren!?
In welchem Zustand? das ist vorerst egal, also ohne zeilenumbruch.

danke im voraus.


<form name="zwei">
<textarea rows=5 cols=50 name="eins">
Mit einem Klick auf dem Button "Markieren", können Sie diesen Text markieren
und in die Zwischenablage kopieren.
</textarea>

<input type=button value="Markieren & Kopieren"
onClick="this.form.eins.select();this.form.eins.focus();
document.execCommand('Copy')">
</form>


mfg
zaheer
 
Eigentlich geht das nicht, weil nicht mehrere Formularfelder gleichzeitig ausgewählt sein können.
Man könnte aber ein weiteres Formularfeld, welches nicht zu sehen ist(aber nicht <input/hidden>) anlegen, in welches dann erstmal die Werte der 5 Felder geschrieben werden.
Dieses eine Feld kann man dann wie in deinem Beispiel selektieren und kopieren.

Beispiel:
(das "versteckte" Feld ist dabei ein <textarea>...zwecks Zeilenumbruch,... es wird erst vom Skript in die Seite geschrieben.)
Code:
<html>
<head>
<script type="text/javascript">
<!--
function c2c()
{
if(!document.all||window.opera){return;}
if(!document.all.tmp)
	{
	document.body.innerHTML+='<textarea style="width:1px;height:1px;"id="tmp"></textarea>';
	}
document.all.tmp.value=
		document.all.feld1.value+'\n'+
		document.all.feld2.value+'\n'+
		document.all.feld3.value+'\n'+
		document.all.feld4.value+'\n'+
		document.all.feld5.value;
			document.all.tmp.select();
			document.execCommand('copy');
}
//-->
</script>
</head>
<body>
<form>
<input type="text"name="feld1"value="Vorname">
<input type="text"name="feld2"value="Name">
<input type="text"name="feld3"value="PLZ">
<input type="text"name="feld4"value="Wohnort">
<input type="text"name="feld5"value="Strasse">
<input type="button"value="copy2clipboard"onclick="c2c()">
</form>
</body>
</html>
Den Button würd ich dabei auch erst per JS in die Seite schreiben, der irritiert sonst nur Leute ohne IE/Win :-)
 
DANKESCHÖN!

hallo fatalus,

ich dank dir herzlich, hast mir sehr geholfen...bin noch ein Anfänger, werde sicherlich ab und zu deine Hilfe gebrauchen, hoffe das du mir hilfst :-)

fatalus = Helfer

mfg
zaheer
 
hallo,

habe es doch geschafft das ganze ohne ein unsichtbares textfeld zu realisieren, also ohne zwischenzuspeichern.

so siehts aus:


<html>
<head>
<script type="text/javascript">
<!--
function zwiKopieren()
{
if(!document.all||window.opera){return;}

window.clipboardData.setData("Text",document.all.feld0.value + "\n" + document.all.feld1.value + "\n" + document.all.feld2.value + "\n" + document.all.feld3.value + "\n" + document.all.feld4.value + "\n" + document.all.feld5.value);

}
//-->
</script>
</head>
<body>
<form>
<input type="text"name="feld0"value="ID"><br>
<input type="text"name="feld1"value="Name"><br>
<input type="text"name="feld2"value="Vorname"><br>
<input type="text"name="feld3"value="Strasse"><br>
<input type="text"name="feld4"value="PLZ"><br>
<input type="text"name="feld5"value="Ort"><P>
<input type="button"value="Kopieren"onclick="zwiKopieren()">
</form>
</body>
</html>


vielleicht kanns ja jemanden interessieren :-)

Aber jetzt steh ich vor einem neuen Problem, das ganze funktioniert nur im IE nicht mozilla oder NN!
Hat da jemand einen rat oder tip?

mfg
zaheer
 
Nö, da gibts definitiv keine Möglichkeit... das geht nur mit dem IE... und nur unter Windows.

Warum...execCommand(),clipboarddata usw. sind keine Bestandteile von Javascript, sondern von JScript... und das ist, was Browser betrifft, IE-Only.

Das hat auch seine Gründe... es handelt sich dabei eigentlich um ein Sicherheitsproblem, denn durch diese Methode ist Zugriff auf Daten ausserhalb des Browsers möglich... man könnte sich bspw. ohne dessen zutun problemlos den Inhalt der Zwischenablage eines Besuchers zusenden lassen... und dort können sich eine Menge sensibler Daten befinden.

Auf der anderen Seite kann man damit die Zwischenablage überschreiben... das kann im Zweifelsfall einen enormen Schaden anrichten.

Dieser Clipboardzugriff ist zwar, so wie in deinem Fall, eine sinnvolle Bereicherung, und du weist den Besucher ja auch auf die Aktion hin, aber der IE hat da keine Möglichkeit zu unterscheiden, welcher Art die Absichten sind.... und andere Browser machen das prinzipiell nicht, weil es im Grunde genommen ein Skandal ist :-)

BTW.:Im IE kann/sollte man dieses Feature auch abstellen... du kannst also nicht einmal davon ausgehen, dass es auf allen Win-IE's läuft.

Abstellen geht unter IE->Internetoptionen->Sicherheit->Einfügeoperationen über ein Skript zulassen->deaktivieren.

Tut mir leid, wenn dir das bisher noch niemand gesagt hat... ich hoffe, du beisst jetzt nicht verzweifelt in deine Tastatur :( :-)
 

Neue Beiträge

Zurück