Avatar billede cool_casper Nybegynder
13. april 2004 - 14:07 Der er 15 kommentarer og
1 løsning

Indsæt Dato ved tryk på CTRL + D

Hej,

Jeg er ved at lave et site til et intranet så skal i den forbindelse have lavet en javascript funktion som kan indsætte dato når man trykker CTRL + D. Men mit problem er egentlig at jeg ikke gider skrive OnKeyUp="minfunktion()" (eller lign.) i HVERT tekstfelt jeg laver.. Findes den er en mulighed for at jeg kan lave en kode som gør det til noget generelt over siden?
Altså hvis den står i et tekstfelt så skal den indsætte noget tekst ved tryk på en given tast..
Kan dette lade sig gøre?
Avatar billede thesurfer Nybegynder
13. april 2004 - 14:11 #1
<script type="text/JavaScript">
document.onkeyup = function() { alert('op');}
</script>

?
Avatar billede cool_casper Nybegynder
13. april 2004 - 14:12 #2
hehe.. Det er mig der stiller spørgsmålene! ;o)
Prøver lige..
Avatar billede cool_casper Nybegynder
13. april 2004 - 14:14 #3
Hmm.. Det ser fint nok ud, men hvordan får jeg den så til at indsætte f.eks. "13-04-2004" i et tekstfelt (hvis der er fokus!) når jeg trykker CTRL + D ?
Avatar billede thesurfer Nybegynder
13. april 2004 - 14:20 #4
Det ved jeg ikke helt..
- Du skal "trappe" tasterne der trykkes.. (du skal ave fat på koderne til "CTRL" og "D")
- CTRL+D bruges normalt til browserens "bookmark side"-funktion
- Hvis datoen skal indsættes, hvor markøres er (virker vist kun i Internet Explorer og Mozilla): http://eksperten.dk/spm/469421

Du kan lave det sådan (så kan du indsætte koden ved alerten):

<script type="text/JavaScript">
function minfunk()
{
alert('koden indsættes her');
}

document.onkeyup = function() {minfunk()};
</script>
Avatar billede cool_casper Nybegynder
13. april 2004 - 15:05 #5
hehe.. Det ved jeg godt, og som jeg sagde var mit problem mere at jeg ville have koden til CTRL + D (nummeret om du vil) samt koden til hvordan den indsætter der hvor der er fokus.. Altså hvor cursoren står!
Avatar billede thesurfer Nybegynder
13. april 2004 - 15:13 #6
hmm.. kan du få den her til at virker?: http://developer.irt.org/script/233.htm
Kopier koden over en i ny html fil, og test det..
Man skal ikke sætte cursoren i tekstfeltet.. bare klikke i dokumentet..
Avatar billede thesurfer Nybegynder
13. april 2004 - 15:15 #7
Her er endnu et link: http://developer.irt.org/script/259.htm

Jeg kan ikke få de links til at virke med CTRL+D.. men de virker fint med SHIFT+D.
Avatar billede cool_casper Nybegynder
13. april 2004 - 15:44 #8
hmm.. Jeg må prøve at lege lidt med det..
IE sørger garanteret for at "overrule" CTRL + D koden, så man ikke kan bruge den! :)
Avatar billede grunken Nybegynder
13. april 2004 - 15:47 #9
er det måske sådan her du vil have det ?

som surfer så korrekt siger, så er der alle mulige interne browserfunktioner, så du vil får problemer med eks. ctrl+d :o)

men prøv da den her :o) (shift+ctrl+d)

kræver at du som minimum giver alle dine felter i formen et unikt name :o)

<script type="text/javascript">

var aktivtfelt = false

window.onload = function(){
elm = document.forms['gammelgnu'].elements;
for(i=0;i<elm.length;i++){
  if(elm[i].type=="text"){
  elm[i].onfocus = new Function("aktivtfelt='"+elm[i].name+"';")
  elm[i].onblur = new Function("aktivtfelt=false")
  }
}
}

function kastdato(e) {
  if (!e) e=event;
    if(aktivtfelt){
    elm = document.forms.gammelgnu[aktivtfelt]
    ch = String.fromCharCode(e.keyCode).toLowerCase();
    if (e.ctrlKey && e.shiftKey && ch=="d") {
      d = new Date();
      elm.value = elm.value + d.getDate() + "-" + d.getMonth() + "-" + d.getFullYear();
      return false;
    }
    }
}
document.onkeydown = kastdato;
</script>

<form name="gammelgnu">
<input type="text" name="dato"/><br/>
<input type="text" name="hmmm"/>
</form>
Avatar billede cool_casper Nybegynder
13. april 2004 - 15:52 #10
Ja, det er super.. Så må jeg jo bare tage mig til takke med Ctrl + Shift + D.. :)

Dog kunne det være SUPER-COOL hvis den indsatte dato'en der hvor markøren står, og ikke bare i enden af value'en på tekstfeltet..?
Avatar billede roenving Novice
13. april 2004 - 21:11 #11
>>grunken

-- du behøver da ikke engang have et navn på form-felterne:

...
  if(elm[i].type=="text"||elm[i].type=="textarea"){
  elm[i].onfocus = new Function("aktivtfelt=this;")
...

-- og så:
    elm = aktivtfelt;

-- og det der med at sætte den ind på cursorens plads er ganske rigtigt meget cool, men det er vel en meget forskellig kode, man skal ud i for ie og for gecko-browserne ?-)
Avatar billede cool_casper Nybegynder
25. april 2004 - 14:39 #12
Jeg har brugt løsningen som grunken (sjovt du hedder det når mit kælenavn er "Grunk" :D) og blandet den lidt med noget kode fra andre spørgsmål så jeg fandt ud at af få indsat datoen der hvor cursoren står i min tekstfelt.
Point til Grunken..  - svar?
Avatar billede thesurfer Nybegynder
25. april 2004 - 16:09 #13
Virker det også med CTRL+D? (eller kun SHIFT+D?)

Jeg tror at det ville være en god ide, at skrive løsningen her, så det kan hjælpe andre.. (det står også i reglerne)
Avatar billede cool_casper Nybegynder
25. april 2004 - 18:27 #14
Sry - jeg har brugt alternativet CTRL + SHIFT + D.
Og koden må jeg lige poste imorn når jeg kommer på job igen! ;)
Avatar billede cool_casper Nybegynder
26. april 2004 - 10:55 #15
Det endte faktisk med at jeg fik lov at "overule" IE's normale genveje. Så man kan nu trykke CTRL eller SHIFT + D (og også begge dele! =D)

Er faktisk ret tilfreds med det nu.. :D


<script>
            function insertText(frmElm,text) {
                if (frmElm.selectionEnd) {frmElm.value = strInsert(frmElm.value,text,frmElm.selectionEnd);}
                else if (document.selection) {r = document.selection.createRange();r.text = text;}
                else if (document.selection == undefined) frmElm.value += text;
                else;
            }
            var aktivtfelt = false
           
            window.onload = function(){
            <%=sOnLoad%>.focus();
            elm = document.forms['nyordre'].elements;
            for(i=0;i<elm.length;i++){
              if(elm[i].type=="text"||elm[i].type=="textarea"){
                elm[i].onfocus = new Function("aktivtfelt=this;")
              elm[i].onblur = new Function("aktivtfelt=false")
              }
            }
            }
           
            function kastdato(e) {
              if (!e) e=event;
                if(aktivtfelt){
                elm = aktivtfelt;
                ch = String.fromCharCode(e.keyCode).toLowerCase();
                if ((e.ctrlKey || e.shiftKey) && ch=="d") {
                  d = new Date();
                  insertText(elm,d.toLocaleString());
                  return false;
                }
                }
            }
            document.onkeydown = kastdato;
        </script>



- Hvis du ville smide et svar grunken??
Avatar billede cool_casper Nybegynder
14. maj 2004 - 21:36 #16
Så tager jeg dem selv! :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

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging