Avatar billede mulles.tk Nybegynder
10. december 2003 - 19:45 Der er 17 kommentarer og
2 løsninger

fortsat. indsæt indtastet værdi i tekst boks

Dette er en fortsættelse af:
http://www.eksperten.dk/spm/437997

Tekstboksen har en værdi fra starten af, men når jeg indsætter et mail link via funktionen så sletter den teksten der står i forvejen?

Kan man ikke gøre sådan, at den bare indsætter linket der hvor markøren er placeret, og har markøren ikke været placeret i tekstboksen endnu, så kommer det bare til at stå først?
Avatar billede thesurfer Nybegynder
10. december 2003 - 20:08 #1
document.FORMNAVN.FELTNAVN.value += 'ny værdi';
Avatar billede thesurfer Nybegynder
10. december 2003 - 20:10 #2
"=" betyder "ny værdi"
"+=" betyder "tag den nuværende værdi, og tilføj ny værdi"

Jeg ved ikke lige om det løser problemet med cursoren, men det løser problemet "sletter den teksten der står i forvejen"..
Avatar billede grunken Nybegynder
10. december 2003 - 20:39 #3
Sådan, men det er en ie-only løsning

<html>
<head>
<script>
fokus = false;

function indsaet(str) {
if (!fokus) {
  document.all['feltet'].value += str;
}else{
  r = document.selection.createRange();
  r.text = str + r.text;
  }
}
</script>
</head>

<body>
<textarea id="feltet" onfocus="fokus = true;" onblur="fokus = false;" style="width:200px;height:100px;">
</textarea>
<p>
<a href="#" onmousedown="indsaet('noget tekst');">Indsæt</a>
</body>
</html>
Avatar billede mulles.tk Nybegynder
10. december 2003 - 20:40 #4
Kan du ikke lige sætte det sammen med dette:
frm.txt.value=mailto; ?
Avatar billede mulles.tk Nybegynder
10. december 2003 - 20:43 #5
Hmm... Grunken, skal nok bruge en løsning der virker til alle browsere, da det er en virksomhed jeg laver noget for!
Avatar billede grunken Nybegynder
10. december 2003 - 20:56 #6
Så er det vel bare at rette lidt :-)

men det er så kun iebrugere der vil få brug af den mulighed hvor teksten bliver indsat præsist ved curseren! :-)

hos alle andre bliver teksten først indsat efter det tekst der står i forvejen :-)

her ->

<html>
<head>
<script>
fokus = false;

function indsaet(str) {
if(document.selection){
  if(!fokus) {
  document.all['feltet'].value += str;
  }else{
  r = document.selection.createRange();
  r.text = str + r.text;
  }
}else{
  document.getElementById('feltet').value += str;
}
}
</script>
</head>

<body>
<textarea id="feltet" onfocus="fokus = true;" onblur="fokus = false;" style="width:200px;height:100px;">
</textarea>

<p>

<a href="#" onmousedown="indsaet('noget tekst');">Indsæt</a>
</body>
</html>
Avatar billede mulles.tk Nybegynder
10. december 2003 - 22:13 #7
Så skal det bare lige kombineres med det fra det tidligere spørgsmål.

Kan det gøres sådan her:
function doMail(frm){
    email=window.prompt('Indtast den E-mail der skal linkes til','mail@domain.com');
    linktxt=window.prompt('Indtast den tekst der skal vises','');
    mailto='<a href="mailto:'+email+'">'+linktxt+'</a>';
    frm.indsaet(value=mailto);
    return;
    }

Har ændret denne linie:

frm.txt.value=mailto; til frm.indsaet(value=mailto);
Avatar billede thesurfer Nybegynder
10. december 2003 - 22:16 #8
Det skal vel bare være:

function doMail(frm){
    email=window.prompt('Indtast den E-mail der skal linkes til','mail@domain.com');
    linktxt=window.prompt('Indtast den tekst der skal vises','');
    mailto='<a href="mailto:'+email+'">'+linktxt+'</a>';
    indsaet(mailto);
    return;
    }
Avatar billede mulles.tk Nybegynder
10. december 2003 - 22:27 #9
Hehe så virker det!

Men grunken, nu bruger jeg IE men ved mig bliver det også sat ind til sidst i tekstboksen og ikke der hvor curseren er!
Avatar billede thesurfer Nybegynder
10. december 2003 - 22:34 #10
Hvis du ikke kan få "cursor"-koden til at virke, vil den nemmeste kode til "sletter den teksten der står i forvejen"-problemet, være:
frm.txt.value+=mailto;

Den smider det i slutningen af teksten, uden at slette hele tekstfeltet.
Avatar billede mulles.tk Nybegynder
10. december 2003 - 22:47 #11
Ok, så bruger jeg den hvis ikke grunken har et forslag til det andet?
Avatar billede grunken Nybegynder
10. december 2003 - 23:51 #12
det er da bare at ændre endnu engang :-) (jeg havde ikke tidligere lige opsnappet at den skulle bruges i den sammenhæng)

<html>
<head>
<script>
fokus = false;

function doMail(frm){
email=window.prompt('Indtast den E-mail der skal linkes til','mail@domain.com');
linktxt=window.prompt('Indtast den tekst der skal vises','');

document.getElementById('feltet').focus();
if(document.selection){
  r = document.selection.createRange();
  r.text = '<a href="mailto:'+email+'">'+linktxt+'</a>' + r.text;}
else
  document.getElementById('feltet').value += str;
}

</script>
</head>

<body>
<textarea id="feltet" style="width:200px;height:100px;">
</textarea>
<p>
<a href="#" onmousedown="doMail();">Indsæt</a>
</body>
</html>

-og sorry for delay, men jeg kan desværre ikke sidde her hele tiden :(
Avatar billede grunken Nybegynder
10. december 2003 - 23:52 #13
hov og fjern lige linien med focus = false;

var lige lidt hurtig *G*
Avatar billede thesurfer Nybegynder
11. december 2003 - 00:24 #14
onmousedown="doMail();"?.. Var det ikke bedre med onclick eller onmouseup, så man har en chance for at ombestemme sig?
Avatar billede mulles.tk Nybegynder
13. december 2003 - 17:45 #15
grunken, et svar? -har fået det til at virke!
Avatar billede grunken Nybegynder
13. december 2003 - 18:09 #16
svar :-)
Avatar billede mulles.tk Nybegynder
14. december 2003 - 19:48 #17
håber I finder det fair :?
Avatar billede thesurfer Nybegynder
14. december 2003 - 19:58 #18
Jada.
Jeg kan stadig ikke se hvorfor grunken har brugt "onmousedown".. se mit sidste indlæg..
Avatar billede mulles.tk Nybegynder
14. december 2003 - 22:32 #19
Jeg bruger heller ikke onmousedown, men ...

<input type="button" name="mail" value="Indsæt e-mail link" onClick="doMail(this.form);">

... i stedet!
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