Avatar billede janemil Nybegynder
20. maj 2010 - 15:24 Der er 22 kommentarer og
1 løsning

function onlyNumbers - firefox error

function onlyNumbers(evt)
{
    var e = event || evt; // for trans-browser compatibility
    var charCode = e.which || e.keyCode;

    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;

    return true;
}


<input name="/(LB5s0A) - /(LB5s1A)" value="" maxlength="3" size="1" onkeypress="return onlyNumbers();" style="text-align:right" />

Man kan desværre taste andet end tal i firefox. Ideer til at rette det?
Avatar billede j4k0b Nybegynder
20. maj 2010 - 15:42 #1
Kan dette bruges?



function isNumber(input) {
    return parseInt(input) == input;
}
function onlyNumbers(elem) {
    return isNumber(this.value.substr(-1));
}

<input name="/(LB5s0A) - /(LB5s1A)" value="" maxlength="3" size="1" onkeypress="return onlyNumbers(this);" style="text-align:right" />
Avatar billede j4k0b Nybegynder
20. maj 2010 - 15:48 #2
this.value.substr(-1)

skal lige rettes til:

elem.value.substr(-1)
Avatar billede janemil Nybegynder
20. maj 2010 - 15:49 #3
Synes ikke det virker for mig.
Avatar billede j4k0b Nybegynder
20. maj 2010 - 15:50 #4
Den korte version ser sådan her ud


function isNumber(input) {
    return parseInt(input) == input;
}

<input name="/(LB5s0A) - /(LB5s1A)" value="" maxlength="3" size="1" onkeypress="return isNumber(this.value.substr(-1));" style="text-align:right" />
Avatar billede janemil Nybegynder
20. maj 2010 - 15:53 #5
Virker ikke synes jeg
Avatar billede j4k0b Nybegynder
20. maj 2010 - 16:46 #6
ok - mit eksempel virkede ikke... må teste inden jeg poster næste gang :-)

her er noget som virker
http://www.java2s.com/Code/JavaScript/Form-Control/AllowingOnlyNumbersintoaTextBox.htm
Avatar billede Slettet bruger
20. maj 2010 - 20:06 #7
Denne virker i FireFox, Opera og Chrome - (har ingen iE)

function onlyNumbers(e)
    {
    var charCode = (window.event) ? window.event.keyCode : e.which
   
    if (charCode < 32) // nonprintable: Delete/backspace/piletaster er OK
        return true

    if (charCode >= 48 && charCode <= 57) // 0-9
        return true
    else
        return false
    }
Avatar billede olebole Juniormester
20. maj 2010 - 21:40 #8
<ole>

- og den 'sexy' version:

<script type="text/javascript">
function onlyNumbers(e) {
    var num = String.fromCharCode(window.event ? window.event.keyCode : e.which);
    return !(num-1<num);
}
</script>


/mvh
</bole>
Avatar billede olebole Juniormester
20. maj 2010 - 21:42 #9
Arhhhh ... det er jo lige omvendt ... kun tal!  =)

<script type="text/javascript">
function onlyNumbers(e) {
    var num = String.fromCharCode(window.event ? window.event.keyCode : e.which);
    return (num-1<num);
}
</script>
Avatar billede olebole Juniormester
20. maj 2010 - 21:47 #10
- og med Delete/Backspace/piltaster:

<script type="text/javascript">
function onlyNumbers(e) {
    var num = String.fromCharCode(window.event ? window.event.keyCode : e.which);
    return num&&(num-1<num);
}
</script>
Avatar billede showsource Seniormester
20. maj 2010 - 21:52 #11
Det her virker i IE8, google chrome og firefox

<html><head>

<script type="text/javascript">

function show_key(event) {
alert(event.keyCode);
}

</script>

</head>
<body onkeydown="show_key(event);">

Keycodes

</body></html>

Men vil du tjekke at det er tal som indtastes ?
Avatar billede showsource Seniormester
20. maj 2010 - 21:53 #12
Nåh, så ikke ole's .....
Avatar billede Slettet bruger
21. maj 2010 - 02:31 #13
Årh, hvor er jeg træt af at Eksperten spiser ens indlæg... om igen:

#10: Snedigt
function onlyNumbers(e)
  {
  var num = String.fromCharCode(window.event ? window.event.keyCode : e.which)
  return num&&(num-1<num)
  }

Og faktisk bedre end min, fordi man med min (og mit tastatur) KAN komme til at indtaste potenser f.eks: 3²1

Men hvordan vil du klare at tillade - , og . (som kan forekomme i tal)
- uden at forfalde til mit usexede (men læse- og rettevenlige) niveau ?

NB: Hvad betyder din smiley: =)
Høj hat / cigarføring, Adolf overskæg, katteøjne, gællespalter..  ?
Avatar billede olebole Juniormester
21. maj 2010 - 10:24 #14
Det kommer lidt an på, hvordan man læser spørgsmålet. Man må kun kunne indtaste tal - men minus (bindestreg) og punktum er ikke i sig selv tal ... omend de kan indgå i et tal. Hmmm ... ciffre/tal ... hmmm  =) (- og den smiley kniber vel bare øjnene lidt sammen. Jeg har egentlig aldrig spurgt ham, hvorfor han dog ser så fjollet ud - hehe).

Hvis andet end hele, positive tal skal understøttes, ville jeg nok bruge RegExp - for det duer formodentlig ikke, at 12-45.78 accepteres  =)
Avatar billede janemil Nybegynder
21. maj 2010 - 11:11 #15
Synes ikke helt noget af det virker for mig.

Håber ikke det er uforskammet at svare selv og lukke opgaven. Det er vist hurtigere for mig.
Avatar billede olebole Juniormester
21. maj 2010 - 11:58 #16
Nøhh, hvis ikke du kan få det til at virke, og du ikke er i stand til at forklare, hvad der ikke virker for dig - eller hvorfor - er det jo næsten umuligt at hjælpe. Specielt, når det virker for os andre  =)
Avatar billede janemil Nybegynder
21. maj 2010 - 12:02 #17
Hvilket af scriptene virker?

Synes jeg har prøvet alle. Startspørgsmålet var dette


function onlyNumbers(evt)
{
    var e = event || evt; // for trans-browser compatibility
    var charCode = e.which || e.keyCode;

    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;

    return true;
}


<input name="/(LB5s0A) - /(LB5s1A)" value="" maxlength="3" size="1" onkeypress="return onlyNumbers();" style="text-align:right" />

Man kan desværre taste andet end tal i firefox. Ideer til at rette det?

Edit - det er heltal
Avatar billede Slettet bruger
21. maj 2010 - 14:32 #18
Både #10 og #7 virker perfekt - i alle browsere.
- Hvis ikke de gør i dit "miljø" må der være noget andet galt...

Jeg går ud fra at name="/(LB5s0A) - /(LB5s1A)" blot illustrerer at der er mere end ét felt ?
(et feltnavn skal være ét ord, starte med et bogstav eller _ og må kun bestå af bogstaver, tal og _
- hverken mellemrum, minus eller paranteser er tilladt)

Får du nogen fejlmeddelelser ?

Kan vi se det, live, et sted ?
Avatar billede janemil Nybegynder
21. maj 2010 - 14:38 #19
Lig gerne svar for dit forslag så.
Avatar billede Slettet bruger
21. maj 2010 - 16:16 #20
Jeg ligger allerede
Avatar billede olebole Juniormester
24. maj 2010 - 15:05 #21
T4NK3R >> Der er tale om en name attribut - og den er helt valid. Havde det derimod været en id attribut, ville du have ganske ret  ;o)

Der væsentlig forskel på, hvad en name og en id attribut må indeholde. En id attribut kan indeholde data af typen ID - mens en name attribut kan indeholde data af typen CDATA.

Oversigt over attributter under HTML:
    http://www.w3.org/TR/REC-html40/index/attributes.html

Oversigt over datatype under HTML:
    http://www.w3.org/TR/REC-html40/types.html#type-id
Avatar billede olebole Juniormester
24. maj 2010 - 15:17 #22
- og hvad angår problemerne med koden i #17, så skyldes de to ting: For det første skal eventen sendes med i funktionskaldet:

<input name="/(LB5s0A) - /(LB5s1A)" value="" maxlength="3" size="1" onkeypress="return onlyNumbers(event);" style="text-align:right">

For det andet bør X-browser-event konstruktionen i funktionen udføres korrekt:

var e = evt || event; // for trans-browser compatibility

- bemærk rækkefølgen
Avatar billede Slettet bruger
28. maj 2010 - 12:09 #23
#21 - Aha, det var jeg ikke klar over. Tak for opklaringen : )
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