Avatar billede baitianlong Nybegynder
14. maj 2009 - 18:53 Der er 4 kommentarer og
1 løsning

Prototype ajax og text field focus

Jeg sidder og leger lidt med Prorotype, men der er et par ting, jeg gerne vil kunne.

Her er koden:


<script type="text/javascript" src="prototype-1.6.0.3.js"></script>
      <script type="text/javascript">
            /* ajax.Request */
            function ajaxRequest() {
                var url = 'search.do';
                var aj = new Ajax.Request(
                url,
                {
                    method:'get',
                    parameters: 'word=' + $F('sw'),
                    onComplete: getResponse
                });
            }
            /* ajax.Response */
            function getResponse(oReq) {
                document.forms[0].sw.value=oReq.responseText;
                document.forms[0].sw.focus();
            }   
      </script>


1)
Foerst proevede jeg at bruge $F('sw').value=oReq.responseText;
men det virkede ikke, derfor skiftede jeg til ovenstaaende... Burde det ikke virke?

2)
Jeg vil gerne have det saadan at kun "resten af ordet/foreslaget" er i focus. Hvordan goer jeg det.

Som det er nu virker det fint nok, hvis man taster J, bliver der skrevet Joe i tekstfeltet, men det skulle vaere saadan at 'oe' i Joe var i focus, saa de bliver erstattet i videre indtastning. I ved sikkert hvad jeg mener...
Avatar billede fant0mas Nybegynder
14. maj 2009 - 19:13 #1
Husk id på dit input (sw).
$F('sw') er det samme som $('sw').value, altså henter den værdien.

Gør sådan:
inp = $('sw');
inp.value = oReq.responseText;
inp.focus();
Avatar billede baitianlong Nybegynder
14. maj 2009 - 19:33 #2
inp = $('sw');
inp.value = oReq.responseText;
inp.focus();

Denne kode opdaterer tekstfeltet med 'Joe' jvf. eksemplet - 'J'

Saa det er fint nok, jeg gaar videre med $('sw')... hvad med anden del af spoergsmaalet. Det er et andet trick. Der skal vaere focus paa det man ikke har tastet. I dette tilfaelde skal 'oe' vaere markeret, men ikke 'J'. Nogen ideer? Altsaa basically saadan at ordet skifter efterhaanden som
Avatar billede baitianlong Nybegynder
16. maj 2009 - 15:51 #3
Jeg har nu fundet ud af resten af problemet:

function getResponse(oReq) {
                if(oReq.responseText != "") {
                    inp = $('sw');
                    var start = inp.value.length;
                    inp.value = oReq.responseText;
                    setSelection(start);
                }
            }
            function setSelection(start) {
                if($('sw').createTextRange) {
                    //alert("IE");
                    var oRange = $('sw').createTextRange();
                    oRange.moveStart("character", start);
                    oRange.moveEnd("character", 0);
                    oRange.select();
                } else {
                    //alert("FF");
                    $('sw').setSelectionRange(start, $('sw').value.length)
                }
                $('sw').focus();
            }

Saadan faar jeg den til at markere resten af foreslaget efter det indtastede...

Du kan smide et svar for bidraget :)
Avatar billede fant0mas Nybegynder
16. maj 2009 - 17:46 #4
Ellers tak, snup dem selv.
Avatar billede baitianlong Nybegynder
16. maj 2009 - 19:14 #5
OK saa, det er nu ikke just min politik, ikke at give points.
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