Avatar billede hansons Nybegynder
18. september 2003 - 14:01 Der er 14 kommentarer og
1 løsning

copytoclip script

Hejsa
Jeg arbejder med en html side.
Jeg har et tekstfelt i en form. Feltet hedder:
<id>

Indholdet af dette felt tager jeg en kopi af ved hjælp af et Head Script som følger:
----------------------------------------------------------
var copytoclip=1
function HighlightAll(theField) {
var tempval=eval("document."+theField)
tempval.focus()
tempval.select()
if (document.all&&copytoclip==1){
therange=tempval.createTextRange()
therange.execCommand("Copy")
window.status="Contents highlighted and copied to clipboard!"
setTimeout("window.status=''",1800)
}
}
----------------------------------------------------------
ved siden af feltet <id> er der så et link der aktivere scriptet som følger:
----------------------------------------------------------
java script:HighlightAll('test.id')
----------------------------------------------------------
hvor test er form navnet og id er feltet.

Alt dette fungerer perfekt der bliver således taget et kopi af indeholdet i tekstfeltet.

HER ER PROBLEMET:
Jeg har et andet tekstfelt i en anden form. Dette felt hedder:
<id::ok_1_1.3>

Hvis jeg benytter samme metode som til feltet <id> sker der ingenting.
Jeg har på fornemmelsen at det er det sidste punktum  før 3 der forhindre scriptet i at virke.

Hvad skal det til for at få det til at fungere ?

Kan ikke ændre navnet på feltet.
Avatar billede Slettet bruger
18. september 2003 - 17:45 #1
Du må ikke have punktummer i en id. Så du bliver vist nødt til at følge W3C's anbefalinger.
Avatar billede hansons Nybegynder
19. september 2003 - 06:13 #2
Jeg SKAL bruge en løsning.
W3C`s anbefalinger er ikke brugbar i dette tilfælde.
Punktummet bliver der. Er der andre forslag der kan løse dette LILLE problem så
vanker der point.
Avatar billede Slettet bruger
19. september 2003 - 17:45 #3
W3C's anbefalinger er i høj grad brugbare altid. Men dette burde løse problemet (det er også mere korrekt):

var tempval=eval("document."+theField)

... skal være:

var tempval = document.getElementById(theField);
Avatar billede olebole Juniormester
11. oktober 2003 - 07:00 #4
<ole>

Jamen, det er da ikke det ringeste i modstrid med W3C's rekommendationer at anvende punktum i en id. Det er ganske lovligt  :)

'id' må indeholde små og store bogstaver fra 'a' til 'Z', tal, underscore, bindestreg, kolon og punktum - men _skal_ begynde med et bogstav.
'name' er der endnu videre rammer for (må f.eks. indeholde mellemrum og entities, som &oslash;), da den er defineret som CDATA.

Til gengæld skal du huske gåseøjne omkring id'en (og jeg har på fornemmelsen, du er så meget IE-mand, at du undlader dem).
Man kan sagtens undlade gåseøjne i mange tilfælde, men det kræver, man kan sit kram så godt, at man ved, hvor de er påkrævet ... ellers bør man _aldrig_ udelade dem.
Alle attributter, hvor du f.eks. bruger hasmark eller punktum _skal_ der være gåseøjne om.

/mvh
</bole>
Avatar billede olebole Juniormester
11. oktober 2003 - 07:03 #5
PS: I øvrigt ka du fra IE5.0 bruge:
  window.clipboardData.setData("Text","Dette er min tekst til clipboardet");
som jo er lidt mere 'sexy'.
Metodens andet argument kan sættes med en variabel, der blot indeholder feltets value.
/mvh
Avatar billede hansons Nybegynder
12. oktober 2003 - 09:42 #6
Tak for dit indlæg.

Snakker vi forbi hinanden ?

Id er et textfield af typen name. I tyder id som et specielt Id.
Id brugte jeg som name eksempel det kunne have været et hvilket som helst indhold.

Så med hensyn til dine gåseøjne så bliver ikke meget bedre når jeg benytter din anbefaling bole.

Her er navnet på textfeltet af typen name uden gåseøjne :

power::ok_1_1.1

Her er linket der sætter head scriptet igang.

java script:HighlightAll('test.ok::sonnets_1_1.1')

Der sker ingen ting med eller uden gåseøjne.
Avatar billede olebole Juniormester
12. oktober 2003 - 21:51 #7
Ja, jeg tror du misforstår flere ting  :)

At jeg anbefaler dig at bruge gåseøjne, bunder blot i, jeg gerne vil anbefale dig at skrive HTML - i stedet for 'HTML-lignende skrammel'. Det er ikke sikkert, det vil afhjælpe fejlen.

Derudover er det svært, at vide, hvad der står i filen udfra din 'prosa'  :)
Hvad betyder f.eks, at et felt 'hedder' noget? Har det et name eller en id? Forskellen er enorm.

Prøv med en URL til siden, så vi har en mulighed for at se, hvad du i virkeligheden laver af fejl.
/mvh
Avatar billede hansons Nybegynder
13. oktober 2003 - 19:31 #8
Avatar billede olebole Juniormester
13. oktober 2003 - 20:46 #9
function copyit(theField) {
    var tempval = document.test2[theField];
    tempval.focus();
    tempval.select();
    therange=tempval.createTextRange();
    therange.execCommand("Copy");
}

og så skal dit navn se sådan ud:
  name="ok::sonnet_1_1.1"
Dvs: Intet formnavn i feltets name-attribute
/mvh
Avatar billede olebole Juniormester
13. oktober 2003 - 20:48 #10
Du kan også skrive:

function copyit(theField) {
    var tempval = document.getElementById(theField);
    tempval.focus();
    tempval.select();
    therange=tempval.createTextRange();
    therange.execCommand("Copy");
}

Så skal feltet _også_ have en id:
  id="ok::sonnet_1_1.1"
Avatar billede olebole Juniormester
13. oktober 2003 - 20:50 #11
Og endelig:

function copyit(theField) {
    var tempval = document.all[theField];
    tempval.focus();
    tempval.select();
    therange=tempval.createTextRange();
    therange.execCommand("Copy");
}

Hvor du kan tildele feltet enten et name eller en id.
Så skulle der være lidt at vælge imellem  :)
Avatar billede hansons Nybegynder
13. oktober 2003 - 22:16 #12
Nu har jeg fået grus i øjnene, efter forgæves at have afprøvet dine anbefalinger.

Kan du evt. hente siden ned - rette i den - sende den til mig eller give en url til din version for jeg er kørt tør nu...
Avatar billede olebole Juniormester
13. oktober 2003 - 22:48 #13
There ya' go, hombre:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<HEAD>
<meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
<title>copytoclip</title>
<SCRIPT LANGUAGE="JavaScript">
function copyit(theField) {
    var tempval = document.all[theField];
    tempval.focus();
    tempval.select();
    therange=tempval.createTextRange();
    therange.execCommand("Copy");
}

</script>
<link rel="StyleSheet" href="txt.css" type="text/css">
</head>
<body>
<p>/** copytoclip javascript der virker. */</p>
<p>
<form name="test">
<b>Room_nbr</b> <input type="text" name="Room_nbr" size="24" value="ja det virker"><input onclick="copyit('Room_nbr')" type="button" value="Kopi" name="cpy">
</form>
<p></p>
<p>/** copytoclip javascript der IKKE virker MULIGVIS pga. feltnavnet ?. */</p>
<p></p>
<form name="test2" action="FMPro?" method="post">
<span><span><b>ok::sonnet_1_1.1 </b></span></span><input type="text" name="ok::sonnet_1_1.1" size="15" value="nej virker ikke" maxlength="15" tabindex="2" class="moduleBodyText"><input onclick='copyit("ok::sonnet_1_1.1")' type="button" value="Kopi2" name="cpy2">
</form>
<p></p>
<p></p>
<p>/** Kan ikke selv l&oslash;se dette ! Ka i ? */</p>
<p></p>
<p>Med venlig hilsen</p>
<p>Jan Hanson</p>
<p>www.TimeSolution.dk</p>
<p><a href="mailto:hanson@timesolution.dk">hanson@timesolution.dk</a></p>
</body>
</html>

/mvh
Avatar billede hansons Nybegynder
14. oktober 2003 - 08:29 #14
Du er for sej.
Her er 200 p. som lovet.
Håber at kunne benytte din service igen.
Avatar billede olebole Juniormester
14. oktober 2003 - 10:35 #15
... anytime  ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester