Avatar billede ttopholm Nybegynder
21. oktober 2005 - 14:16 Der er 31 kommentarer og
1 løsning

Firefox og disable taster

Jeg dette script:

if(!isNS4)
{
  if(event.keyCode < 45 || event.keyCode > 57)
    event.returnValue = false;
}
else
{
  if(event.which < 45 || event.which > 57)
    return false;
}

Det disabler alle taster på nær de nummeriske..

I IE kan man også bruge piltasterne og Del og backspace..

Men i firefox, er det kun tallende der virker men jeg vil gerne have backspace, del, tab og piletasterne også virker...

Og jeg ved hvad keycode er:
del = 46
Backspace = 8
Venstre pil = 37
Højre pil = 39
tab = 9

Hvordan klare jeg den...
Avatar billede olebole Juniormester
21. oktober 2005 - 14:42 #1
<ole>

Hvordan ser koden ud?

/mvh
</bole>
Avatar billede ttopholm Nybegynder
21. oktober 2005 - 14:47 #2
hvad mener du ;-)
Avatar billede ttopholm Nybegynder
21. oktober 2005 - 14:47 #3
den har du jo der...
Avatar billede olebole Juniormester
21. oktober 2005 - 15:08 #4
Hvis det er alt, der står i dokumentet, er der ikke noget at sige til, det ikke virker  :)
Er du virkelig helt sikker på, der ikke står andet?
Avatar billede olebole Juniormester
21. oktober 2005 - 15:09 #5
- event'en må jo f.eks. komme et sted fra
Avatar billede ttopholm Nybegynder
21. oktober 2005 - 15:11 #6
input name="telefon" type="text" id="telefon" value="<%= telefon %>" onKeypress="if(!isNS4){if(event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;}else{if(event.which < 45 || event.which > 57) return false;}">

Sådan her...
Avatar billede ttopholm Nybegynder
21. oktober 2005 - 15:11 #7
den tjekker det i et input felt...
Avatar billede olebole Juniormester
21. oktober 2005 - 15:19 #8
Jeg prøver en sidste gang: Hvordan ser koden ud?
Det _kan_ ikke være den kode, du bruger - og slet ikke med den beskrivelse, du giver i spørgsmålet. Det er ikke engang copy/paste
Avatar billede ttopholm Nybegynder
21. oktober 2005 - 15:25 #9
vil du have min form eller hvad ????

Der er ikke mere kode end det jo..

Andet en:
var isNS4 = (navigator.appName=="Netscape")?1:0;
og så det kode jeg givet dig der...

Som sagt virker det fint i IE, men i firefox skal jeg bare have åbnet op for tab, del, backspace og venstre/høre piltast
Avatar billede ttopholm Nybegynder
21. oktober 2005 - 15:28 #10
så jeg skal i den her IF-sætning:
if(event.which < 45 || event.which > 57)
Bare finde ud af hvordan den godt må indeholde de ovenstående taster...
Avatar billede olebole Juniormester
21. oktober 2005 - 15:28 #11
- her har i hvert fald aldrig stået en værdi:
    value="<%= telefon %>"
- så noget tyder på, du ikke skriver, hvad der står - og så er det jo svært at hjælpe.
Det kan måske hænge sammen med, at du skal bruge onkeypress i Mozilla og onkeydown i IE - men det er som sagt ikke let at vide, om det er dér, fejlen ligger
Avatar billede ttopholm Nybegynder
21. oktober 2005 - 15:30 #12
noget med :
if((event.which < 45 || event.which > 57) && !(event.which == 8 || event.which == 46 || event.which == 37 || event.which == 39 || event.which == 9))

Men den virker bare ikke
Avatar billede ttopholm Nybegynder
21. oktober 2005 - 15:32 #13
Det er jo lige meget... Det er bare value.. det er IF-sætningen i javascriptet den er gal med....

input name="telefon" type="text" id="telefon" onKeypress="if(!isNS4){if(event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;}else{if(event.which < 45 || event.which > 57) return false;}">

Det giver samme fejl... og IE kan umiddelbart godt klare onkeypress ;-) da IE virker fint
Avatar billede ttopholm Nybegynder
21. oktober 2005 - 15:40 #14
kan du følge mig
Avatar billede olebole Juniormester
21. oktober 2005 - 15:53 #15
Ja, måske når du engang gider at teste med onmousedown i IE ... ellers spilder jeg vist bare min tid
Avatar billede ttopholm Nybegynder
21. oktober 2005 - 16:01 #16
Hvorfor det, hvad skal jeg jeg bruge onmousedown... mener du onkeydown..

Men hvorfor det... Mit script virker jo perfekt, på nær at jeg ikke kan bruge del, tab, backslash, højre/venstre pil tast som jeg kan i IE med den her kode...

Det jeg vil have hjælp til er i bund og grund if sætningen her:
if(event.which < 45 || event.which > 57)
Hvor jeg vil have at men godt må trykke på which = 8,9,46,37,29 og de nummeriske værdier...
Avatar billede olebole Juniormester
21. oktober 2005 - 16:04 #17
Ja, naturligvis ... onkeydown, som jeg skrev i (21/10-2005 15:28:04)
Avatar billede olebole Juniormester
21. oktober 2005 - 16:06 #18
- og du ved ikke, hvad det er, du vil have hjælp til. Du ved, hvad du gerne vil ende med - men årsagen til du spørger, er jo netop, du ikke ved, hvad der er galt  ;o)
Avatar billede olebole Juniormester
21. oktober 2005 - 16:08 #19
Så vidt jeg husker, er der noget med 'Delete' - så det kan godt være, du skal stoppe den fra at bobble videre i hierakiet. Prøv evt:
  onKeydown="if(!isNS4){if(event.keyCode < 45 || event.keyCode > 57) event.cancelBubble=true;event.returnValue = false;}else{if(event.which < 45 || event.which > 57) return false;}"
- hvis ikke onkeydown alene virker på 'Delete'
Avatar billede ttopholm Nybegynder
21. oktober 2005 - 16:10 #20
Det er rigtigt jeg ved ikke hvad der er galt...

Men når jeg kan teste at onkeypress virker fint i IE, hvorfor skal jeg så bruge den onkeydown når du siger at den ikke virker i mozilla,
Så udfra det kan jeg vil konkludere at det virker dertil.
og at det virker med

if(!isNS4)
{
  if(event.keyCode < 45 || event.keyCode > 57)
    event.returnValue = false;
}

Da det IE der vil gøre det her..

Så ergo må fejlen eller rettere det der skal ændres i ligge her:
else
{
  if(event.which < 45 || event.which > 57)
    return false;
}
Avatar billede ttopholm Nybegynder
21. oktober 2005 - 16:11 #21
Til dit kommentar 16:08:41

IE-delen af mit script virker fint, det er i else sætningen vi har problemet..
Avatar billede ttopholm Nybegynder
21. oktober 2005 - 16:12 #22
hvor den bruger det, hvis det er mozilla
Avatar billede olebole Juniormester
21. oktober 2005 - 16:15 #23
Jeg er alt for uvidende til at hjælpe én, der er _så_ klog! Hvis du ikke havde spildt min tid, men testet, hvad jeg skrev, ville du vide, at det, jeg har skrevet, virker præcis, som du ønsker i IE!

Derfra kunne vi så have taget den videre - men lad os bare være enige: Det gider vi ikke.

Jeg er ude af spørgsmålet
Avatar billede olebole Juniormester
21. oktober 2005 - 16:17 #24
Undskyld - undskyld - undskyld ... det er mig, der har misforstået spørgsmålet! Et øjeblik  :)
Avatar billede olebole Juniormester
21. oktober 2005 - 16:46 #25
Jeg så på din kode - og ikke hvad du skrev - og det var et tilfælde, dit script virkede i IE. Det gjorde nemlig ikke, hvad der stod - men visse taster opfører sig anderledes  :)

Sådan bør du nok gøre i stedet:

var isNS4 = (navigator.appName=="Netscape")?1:0;
function bla(e) {
    var s,k = e.keyCode;
    s = ":8:9:37:39:46:";
    if ((k<45 && s.indexOf(":"+k+":")==-1) || (k>57 && s.indexOf(":"+k+":")==-1)) {
        if (!isNS4) {
            e.cancelBubble = true;
            e.returnValue = false;
        } else {
            e.stopPropagation();
            e.preventDefault();
        }
    }
}
</script>

<input name="telefon" type="text" id="telefon" value="ksfdksdkk" onKeypress="bla(event)">
Avatar billede olebole Juniormester
21. oktober 2005 - 16:51 #26
- og denne her er lidt slankere:

function bla(e) {
    var s,k = e.keyCode;
    s = ":8:9:37:39:46:";
    if ((k>45 && k<57) || s.indexOf(":"+k+":")!=-1) return;
    if (!isNS4) {
        e.cancelBubble = true;
        e.returnValue = false;
    } else {
        e.stopPropagation();
        e.preventDefault();
    }
}
Avatar billede ttopholm Nybegynder
21. oktober 2005 - 16:52 #27
Virker fint i IE, men jeg kan slet ikke taste noget i Firefox nu ikke engang tal..
Avatar billede olebole Juniormester
21. oktober 2005 - 17:01 #28
k = e.keyCode>0? e.keyCode : e.which;  :)
Avatar billede olebole Juniormester
21. oktober 2005 - 17:04 #29
I Moz kan du ikke cancel'e en key på onkeydown. Der har alle keys ellers en keyCode.
På onkeypress kan du cancel'e en key, men der returnerer nogle keys 0 på keyCode - men den korrekte værdi på which - og omvendt  :P
Avatar billede olebole Juniormester
21. oktober 2005 - 17:06 #30
Skal ud af døren, men er tilbage senere iaften. Det burde dog virke nu  :)
Avatar billede ttopholm Nybegynder
21. oktober 2005 - 17:53 #31
Det virker perfekt i IE, FF Safari, OPERA ;-)

Så jeg er en glad man...
Avatar billede olebole Juniormester
21. oktober 2005 - 21:39 #32
- squide godt ... så må du endnu engang undskylde, jeg fik kaget rundt i, hvad det var, der skulle ske  :)

Tak for points  ;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