Avatar billede stigaard Nybegynder
05. december 2003 - 10:10 Der er 8 kommentarer og
2 løsninger

Indsæt tekst i 2 form felter på én gang.

Jeg har en formular med 2 felter (en overskrift og en beskrivelse). Jeg vil gerne kunne paste tekst ind i disse felter på én gang.
Teksten kopiere jeg fra et QuarkXPress dokument og er formateret således at overskriften slutter med en Return og derefter følger beskrivelsen.
Man skal med andre ord kunne paste overskrift og beskrivelse ind i formens overskrift felt, men når scriptet genkender det første return, fortsætter den med at indsætte resten af teksten i beskrivelsesfeltet.
Er det muligt?
Avatar billede mm12010 Nybegynder
05. december 2003 - 10:29 #1
har lidt kode der viser hvordan du henter teksten fra Quark og din form?

et skud i tågen:

function quarkTxt(str){
  str=str.split("\n");
  document.FORMNAVN.FORMFELT1.value=str[0];
  document.FORMNAVN.FORMFELT2.value=str[1];
  }
Avatar billede roenving Novice
05. december 2003 - 14:23 #2
Sådan ?-)

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Del tekst ved paste</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="roenving,http://www.eksperten.dk/spm/436246">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" type="text/javascript">
function splitText(fld){
txt = window.clipboardData.getData("Text");
ret = txt.indexOf("\r\n");
fld.value = txt.substring(0,ret);
fld.form.tekst.value = txt.substring(ret+2);
}
</script>
</head>
<body>
<br>
<form id="minForm" name="minForm">
<input id="overskrift" name="overskrift" type="text" value="Overskrift" onpaste="splitText(this)" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20"><br>
<textarea id="tekst" name="tekst" type="text" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20">Tekst</textarea>
<br>
</form>
</body>
</html>
Avatar billede roenving Novice
05. december 2003 - 14:24 #3
PS. Den er IE5+ only ...
Avatar billede stigaard Nybegynder
08. december 2003 - 16:40 #4
Ja, det virker... under Windows.
Jeg kunne godt tænke mig at få det til at virke med Explorer på en Mac. Er det "\r\n" der skiller det ad? Det må vel kunne erstattes af Mac'ens måde at lave linieskift på? Men det må jeg vel finde på et Mac-site...
Nå, men du skal jo have dine point... :-)
Avatar billede roenving Novice
08. december 2003 - 16:47 #5
-- jeg tror du har ret i, at det er linjeskift-sekvensen, som skiller !o]

Man kunne måske:

ret = txt.indexOf("\r\n");
if(ret==-1)ret = txt.indexOf("\r");
if(ret==-1)ret = txt.indexOf("\n");

-- du kan jo lige eksperimentere med hvilken af dem, som virker, men der bliver nok ikke nogen fejl med begge (for den klassiske sekvens er den foran angivne, så at splitte dem i den rigtige rækkefølge, bør kunne du !-)

-- og velbekomme, men spar på dine points, et sted mellem middel og svært er noh et rigtigere niveau ...

Så lav også selv et svar og behold mindst 150 af pointene '-)
Avatar billede stigaard Nybegynder
09. december 2003 - 16:04 #6
Din første kode virker delvist med IE på Mac, forstås på den måde at overskriften bliver sat rigtigt ind uden de efterfølgende linier, men Tekst feltet forbliver tomt.
Tror du koden kan skrives på en anden måde så det virker?
Jeg tror det er linierne
  fld.value = txt.substring(0,ret);
  fld.form.tekst.value = txt.substring(ret+2);
men jeg forstår ikke nøjagtigt hvad de gør.
Avatar billede roenving Novice
09. december 2003 - 17:22 #7
.substring tager fra første karakter (pos 0) til lige før, den har fundet linjeskift-karakteren(rne)

Den næste linje finder først den omgivende form (har du sådan en ?-), derefter finder den det felt, som hedder tekst og sætter value på den til det, som starter 2 karakterer efter linjeskift-karakteren(rne)

-- og havde lige glemt at tænke på, at der kunne være forskel på det, så:

ret = txt.indexOf("\r\n");
var len = 2;
if(ret==-1){ret = txt.indexOf("\r");len=1;}
if(ret==-1){ret = txt.indexOf("\n");len=1;}

-- og

  fld.form.tekst.value = txt.substring(ret+len);
Avatar billede moejensen Nybegynder
23. april 2004 - 19:54 #8
lukketid
Avatar billede stigaard Nybegynder
22. juni 2004 - 10:04 #9
Jeg fik det desværre ikke til at virke 100% på Mac, PC løsningen er dog god :-)
Avatar billede roenving Novice
22. juni 2004 - 12:29 #10
Hrm ...

Jeg mangler stadig at forstå nogen mærkværdigheder på Mac'en ...

-- og tak for point ;~}
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