[js/html] cursor positie in text-type input field

Pagina: 1
Acties:
  • 153 views sinds 30-01-2008
  • Reageer

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
Voor de experts... Is het mogelijk om de positie van de cursor op te vragen in een form-input veld van 't type text? En zo ja: hoe??? :?

[ specs ] [ Tweaker gallery ]


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

onder het mom van:
[topic=185180/1/50]

een move uit /14 naar /13

  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-01 16:11
Je kunt de positie van de cursor wel opvragen, dus aan de hand van de positie van de cursor en de positie van het textfield moet je een eind kunnen komen..
Horizontale positie in txtfield = ....[textfield].style.left - hor. positie cursor
Verticale positie in txtfield = ....[textfield].style.top - vertical positie cursor ..

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 18:58

RM-rf

1 2 3 4 5 7 6 8 9

hoe definieer je die positie, oftewel wat wil je ermee doen?het is meen ik niet mogelijk exact de x en y-coordinaten op te vragen, maar het is vanaf msie5.5 wel mogelijk een stuk tekst op de cursor-positie te inserten of informatie op te vragen over geselecteerde tekst

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
ACM: my bad...

Ik heb al een stukkie code gevonden om de cursor-positie op te vragen. Dit gaat niet met field.style.left, maar mbv. zoiets:
code:
1
document.selection.createRange().duplicate();

't Is een beetje een maffe methode, maar het werkt wel.

Ik ben nu nog naar een methode op zoek om een gedeelte van de tekst in een input-field te selecteren, vanuit javascript natuurlijk. Maar ik zie dingen als 'createTextRange' staan, dus dat zou moeten lukken... Denk ik...

Simpel gezegd: ik heb de functionaliteit van de 'location' regel in Netscape nodig. Dus je begint met een URL intypen, en Netscape graaft dat in de history en gooit er een suggestie neer, met de tekst vanaf de cursor positie geselecteerd.

Edit: 't Woord waar ik even niet op kon komen: AUTOCOMPLETE!

Edit2: Ik kwam deze code tegen, waarmee het volgens mij wel moet lukken...

Thanks anyway.

[ specs ] [ Tweaker gallery ]


  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
Voor de mensen die 't misschien wel geinig vinden, hier een stukkie code die een autocomplete uitvoert op een text-type input field, waarbij de informatie uit een array komt...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        function fieldComplete(fld,arr) {
                var found = false;
                for (var i = 0; i < arr.length; i++)
                    if (arr[i].toLowerCase().indexOf(fld.value.toLowerCase()) == 0) {
                        found = true;
                        break;
                    }
                if (fld.createTextRange) {
                    var cursorKeys = "8;46;37;38;39;40;33;34;35;36;45;16;17;18;";
                    if (cursorKeys.indexOf(event.keyCode+";") == -1) {
                        var rl = fld.createTextRange();
                        var oldVal = rl.text;
                        var newVal = found?arr[i]:oldVal;
                        if (newVal != fld.value) {
                            fld.value = newVal;
                            var rNew = fld.createTextRange();
                            rNew.moveStart('character',oldVal.length);
                            rNew.select();
                        }
                    }
                }
        }

Zoals je ziet: code is (meer dan) sterk afgeleid uit de code die achter de link staat die ik eerder postte...

[ specs ] [ Tweaker gallery ]


  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-01 16:11
Explore:
Dit gaat niet met field.style.left, maar mbv. zoiets:
code:
1
document.selection.createRange().duplicate();
met [fieldname].style.left bedoelde ik de positie van het inputfield opvragen ..
Pagina: 1