Avatar billede nythjem Nybegynder
07. oktober 2005 - 10:21 Der er 8 kommentarer og
2 løsninger

Hvad gør denne funktion?

Hej Alle!

Jeg har en funktion i en editor, men jeg kan ikke helt se hvad det lige er den gør? Nogle der kan forklare mig det :)

Er det i øvrigt nogen fiks må at måde at indføre en "kun tal" funktion i scriptet?

På forhånd tak, og rigtig god dag.. :)


function IsDigit( e )
{
    e = e || event ;
    var iCode = ( e.keyCode || e.charCode ) ;
    return
        (
            ( iCode >= 48 && iCode <= 57 )        // Numbers
            || (iCode >= 37 && iCode <= 40)        // Arrows
            || iCode == 8        // Backspace
            || iCode == 46        // Delete
        ) ;
}



<input.. onkeypress="return IsDigit(event);">
Avatar billede softspot Forsker
07. oktober 2005 - 10:28 #1
Den sikrer at der kun accepteres tal (og navigationstaster) i et felt.
Avatar billede nythjem Nybegynder
07. oktober 2005 - 10:41 #2
Ja det tænkte jeg nok.. Men underligt nok er det faktisk muligt at indtaste bogstaver..

Knap så smart *Gg*


Okay, men lad os så sige at jeg validerer det indtastede på stedet. Jeg har fundet det her udemærkede script. Kan du hitte ud af, at slette det sidst indtastede, hvis det er et bogstav?

onKeyup="if(!this.value.match(/^[0-9\+ ]+$/)&&this.value!='')alert('Alarm: Kun tal');this.focus();"
Avatar billede softspot Forsker
07. oktober 2005 - 10:49 #3
Umiddelbart vil jeg jo mene at du bare kan returnere false hvis det ikke er et tal, men om det fungerer på keyup som en "sletning" af det sidst indtastede er jeg ikke sikker på...
Avatar billede nythjem Nybegynder
07. oktober 2005 - 10:54 #4
Min brilliante evne til at formulere sig har endnu engang kommet mig til gode *Gg*

Når jeg indtaster et bogstav i input feltet får jeg en alert. Men bogstavet står der stadig. Jeg vil nu gerne have slettet det sidst indtastede i feltet, findes der ikke en smart command i javascript til netop dette formål?

if(!this.value.match(/^[0-9\+ ]+$/)&&this.value!='')
alert('Alarm: Kun tal');
slet sidste indtastede();
this.focus();
Avatar billede nythjem Nybegynder
07. oktober 2005 - 10:56 #5
Jeg tænkte om man ikke kunne bruge substr i denne her situation?

Eksempel..
this.value = this.value.substr(-1, 2)
Avatar billede nythjem Nybegynder
07. oktober 2005 - 12:12 #6
Hej igen..

Jeg har besluttet at udskifte scriptet med et der i hvert fald fungerer korrekt, så tak for ordene.. :)

Du må meget gerne ligge et svar..
Avatar billede softspot Forsker
07. oktober 2005 - 12:20 #7
Hvordan ser det der fungerer så ud (bare for en god orden skyld :))?

Hvis du insisterer på at jeg skal have point for den slatne indsats, så må jeg jo bøje mig, men jeg vil ikke se skævt til dig hvis du beskærer mængden eller undlader at tildele point :)
Avatar billede nythjem Nybegynder
07. oktober 2005 - 12:31 #8
Ja det må vi heller få med... :)

Og vi tager en deler, det var nu også planen.. Men det er altid rart der lige er nogle der responderer :) Og god weekend.. Det er jo lige om lidt.. :)


function numbersonly(myfield, e, dec) {
  var key;
  var keychar;

  if (window.event)
  key = window.event.keyCode;
  else if (e)
  key = e.which;
  else
  return true;
  keychar = String.fromCharCode(key);

  if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
  return true;

  else if ((("0123456789").indexOf(keychar) > -1))
  return true;

  else if (dec && (keychar == "."))
  {
  myfield.form.elements[dec].focus();
  return false;
  }
  else
  return false;
  }

<input .. onkeypress="return numbersonly(this, event)">
Avatar billede olebole Juniormester
07. oktober 2005 - 20:03 #9
<ole>

Du kan vel egentlig blot skrive:

<script type="text/JavaScript">
function numbersonly(myfield, e, dec) {
  var key;
  var keychar;

  key = e.keyCode;
  keychar = String.fromCharCode(key);

  if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
  return true;

  else if ((("0123456789").indexOf(keychar) > -1))
  return true;

  else if (dec && (keychar == "."))
  {
  myfield.form.elements[dec].focus();
  return false;
  }
  else
  return false;
  }
</script>

/mvh
</bole>
Avatar billede olebole Juniormester
07. oktober 2005 - 20:04 #10
- event'en sender du jo med i kaldet  ;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