Ich habe keine Ahnung von JavaScript, aber ich habe es geschafft, diesen Code mit Bits und Bolts aus verschiedenen Stack Overflow-Antworten zusammenzusetzen. Es funktioniert OK und gibt ein Array aller ausgewählten Kontrollkästchen in einem Dokument über ein Warnfeld aus.
function getSelectedCheckboxes(chkboxName) {
var checkbx = [];
var chkboxes = document.getElementsByName(chkboxName);
var nr_chkboxes = chkboxes.length;
for(var i=0; i<nr_chkboxes; i++) {
if(chkboxes[i].type == 'checkbox' && chkboxes[i].checked == true) checkbx.push(chkboxes[i].value);
}
return checkbx;
}
Und um es zu nennen, verwende ich:
<button id="btn_test" type="button" >Check</button>
<script>
document.getElementById('btn_test').onclick = function() {
var checkedBoxes = getSelectedCheckboxes("my_id");
alert(checkedBoxes);
}
</script>
Jetzt möchte ich es so ändern, dass das Ausgabearray in die Zwischenablage kopiert wird, wenn ich auf die btn_test
Schaltfläche checkbx
klicke. Ich habe versucht hinzuzufügen:
checkbx = document.execCommand("copy");
oder
checkbx.execCommand("copy");
am Ende der Funktion und rufe sie dann so auf:
<button id="btn_test" type="button" onclick="getSelectedCheckboxes('my_id')">Check</button>
Aber es funktioniert nicht. Es werden keine Daten in die Zwischenablage kopiert.
Lösung des Problems
function copyToClipboard(text) {
var dummy = document.createElement("textarea");
// to avoid breaking orgain page when copying more words
// cant copy when adding below this code
// dummy.style.display = 'none'
document.body.appendChild(dummy);
//Be careful if you use texarea. setAttribute('value', value), which works with "input" does not work with "textarea". – Eduard
dummy.value = text;
dummy.select();
document.execCommand("copy");
document.body.removeChild(dummy);
}
copyToClipboard('hello world')
copyToClipboard('hello\nworld')
Keine Kommentare:
Kommentar veröffentlichen