Avatar billede pnr Nybegynder
09. oktober 2003 - 13:30 Der er 21 kommentarer og
1 løsning

Problemer med focus?

Jeg har et lille problem med mit script, scriptet virker næsten som det skal, og jeg får heller ikke nogen fejl, men den skulle gerne sætte cursoeren i det felt det er galt, men det gør den ikke, hvorfor?

if (fejl == 1) {
        document.parameter.elements["antal_" + navn].value = document.parameter.elements['oldAntal_'+ navn].value;
        alert("Du må kun indtaste tal mellem 1 - 99");
        document.parameter.elements["antal_" + navn].focus();
        return false;
    }
Avatar billede dawin_dk Nybegynder
09. oktober 2003 - 13:51 #1
hvad gør den istedet ?
Avatar billede pnr Nybegynder
09. oktober 2003 - 14:09 #2
Den sætter ikke focus på noget
Avatar billede dawin_dk Nybegynder
09. oktober 2003 - 14:17 #3
og hvad er der i variablen "navn" .. og findes det tilsvarende felt ?
Avatar billede pnr Nybegynder
09. oktober 2003 - 14:20 #4
ja for den første linie virker fint
Avatar billede dawin_dk Nybegynder
09. oktober 2003 - 14:25 #5
prøv:

if (fejl == 1) {
        document.parameter.elements['antal_' + navn].value = document.parameter.elements['oldAntal_'+ navn].value;
        document.parameter.elements['antal_' + navn].focus();
        alert('Du må kun indtaste tal mellem 1 - 99');
        return false;
    }
Avatar billede pnr Nybegynder
09. oktober 2003 - 14:39 #6
Der sker stadig ikke noget
Avatar billede skovenborg Nybegynder
09. oktober 2003 - 14:45 #7
jeg tror problemmet er at din alert tager fokusset fra din boks. Prøv at bytte om på de to:
if (fejl == 1) {
        document.parameter.elements['antal_' + navn].value = document.parameter.elements['oldAntal_'+ navn].value;
alert('Du må kun indtaste tal mellem 1 - 99');       
document.parameter.elements['antal_' + navn].focus();
       
        return false;
    }
Avatar billede pnr Nybegynder
09. oktober 2003 - 14:48 #8
Det hjalp ikke, men det var vel også det jeg startede med at skrive
Avatar billede skovenborg Nybegynder
09. oktober 2003 - 15:04 #9
kunne du ikke skrive lidt mere af koden - umiddelbart ser det rigtig nok ud, især hvis du siger den første linie virker.
Avatar billede pnr Nybegynder
09. oktober 2003 - 15:17 #10
function beregn(navn){
   
    var stk = document.parameter.elements["antal_" + navn].value;
    var fejl = 0;

    if(!(stk.match(/^[0-9\+ ]+$/))) {
        fejl = 1;
    }
   
    stk = parseInt(stk);
   
    if(stk < 0 || stk > 99 ){
        fejl = 1;
    }

    if (fejl == 1) {
        document.parameter.elements['antal_' + navn].value = document.parameter.elements['oldAntal_'+ navn].value;
        alert('Du må kun indtaste tal mellem 1 - 99');
        document.parameter.elements['antal_' + navn].focus();
        return false;
    }
   
    var lokalPris = 0;
    var stkPris = 0;
    var oldStr = parseFloat(document.parameter.elements['oldStr_'+ navn].value);
    var oldAntal = parseFloat(document.parameter.elements['oldAntal_'+ navn].value);
    gebyr = <%response.write session("startGebyr")%>;       
   
    stkPris = findPris(document.parameter.elements['str_' + navn].value);
   
    oldPris = oldStr * oldAntal
    lokalPris =  stk * stkPris
    var tempPris = parseFloat(document.getElementById("pris").innerHTML);
    var pris = tempPris - oldPris;
    pris = pris + lokalPris
   
    antal = (antal - oldAntal) + stk;
   
    document.getElementById("antal").innerHTML = antal;   
   
    document.getElementById("pris").innerHTML = pris;       
       
    document.getElementById("prisIAlt").innerHTML = (pris + gebyr);
   
    document.parameter.elements['oldStr_'+ navn].value = stkPris;
   
    document.parameter.elements['oldAntal_'+ navn].value = stk;
   
    document.parameter.pris.value = pris;
   
    document.parameter.antal.value = antal;
}
Avatar billede skovenborg Nybegynder
09. oktober 2003 - 15:35 #11
tænkte nu også på selve formen du bruger, hvis du kunne give et eksempel evt. bare et link.
Avatar billede pnr Nybegynder
09. oktober 2003 - 15:39 #12
<input type="text" name="antal_23" size="1" value="0" onChange="java script:beregn('23');" onFocus="java script:this.select();" class="brod_lille">
Avatar billede olebole Juniormester
09. oktober 2003 - 19:22 #13
<ole>

Der skal _aldrig_ bruges 'java script:' i en event-handler  :)

/mvh
</bole>
Avatar billede pnr Nybegynder
09. oktober 2003 - 19:52 #14
Hvorfor ikke det?
Avatar billede olebole Juniormester
09. oktober 2003 - 20:31 #15
Fordi, en event-handler ikke kan andet end afvikle JavaScript - her er brugen af JavaScript-pseudo-protokollen helt misforstået.

Den er til brug i f.eks. href'en i et link - eller til direkte indtastning i adresselinien - men _ikke_ i en event-handler.
/mvh
Avatar billede pnr Nybegynder
10. oktober 2003 - 06:22 #16
Kan du så give et eksempel på hvordan jeg så kan trigge min funktion hvis ikke jeg skal bruge "onChange"?
Avatar billede skovenborg Nybegynder
10. oktober 2003 - 14:12 #17
du skal bare fjerne java script: - altså:
    <input type="text" name="antal_23" size="1" value="0" onChange="beregn('23');" onFocus="this.select();" class="brod_lille">
Avatar billede pnr Nybegynder
10. oktober 2003 - 14:38 #18
ja ok på den måde :-)

Men den fokusere stadig ikke på det rigtige felt
Avatar billede dawin_dk Nybegynder
10. oktober 2003 - 16:12 #19
prøv at lave det til:

onChange="return beregn('23');" eller onblur="return beregn('23');"
Avatar billede olebole Juniormester
10. oktober 2003 - 17:04 #20
Prøv med en URL til siden ... det begynder at minde lidt om Lykkehjulet, det her  :D
/mvh
Avatar billede skovenborg Nybegynder
10. oktober 2003 - 17:18 #21
enig med olebole. Det ville være lettere hvis vi kan se siden hvor det går galt for normalt er der ikke noget problem med focus() metoden.
Avatar billede pnr Nybegynder
31. oktober 2003 - 22:45 #22
jeg takker for hjælpen
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