Avatar billede jytte Nybegynder
18. september 2004 - 19:09 Der er 20 kommentarer og
1 løsning

input-maske

Kan nogen give mig et udkast til en inputmaske i javascript hvor

1) Der kun må indtastes cifre
2) Det første ciffer ikke må være 0
3) Der må højst være 6 cifre

4) Den skal helt virke i mere end internet explorer
Avatar billede roenving Novice
18. september 2004 - 19:25 #1
F.eks.

<script language="javascript" type="text/javascript">
function getCharCode(e){
return (e.which)?e.which:e.keyCode;
}
function test(elm,e){
  if(!e)e = event;
  val = elm.value + String.fromCharCode(getCharCode(e));
  return /^[1-9]\d{0,5}$/.test(val);
}
</script>
<form id="minForm" name="minForm">
<input id="minInput" name="minInput" type="text" value="" onkeydown="return test(this,event);">
</form>
Avatar billede roenving Novice
18. september 2004 - 19:36 #2
Hrm ...

-- den virker zq ik' i Mozilla ...

-- den reagerer nemlig slet ikke på return false; i onkeydown-eventen ?-)
Avatar billede jytte Nybegynder
18. september 2004 - 21:27 #3
umiddelbart ser den ud til at opfyld 1)-3), men ...

jeg kan godt sætte en nul forrest bare det ikke er det første tegn jeg skriver (jeg kan jo med musen ændre indsættelsesstedet). Og når så nullet står der kan jeg ikke få lov til at skrive flere cifre nogen steder i inputfeltet selvom jeg ikke har skrevet 6 cifre endnu.

Du kan altså ikke regne med at et nyindsat ciffer appendes i inputfeltet og så kan jeg godt se det bliver en noget mere kompliceret opgave.

Jeg lægger gerne flere point oveni hvis du eller andre kan gøre din kode endnu bedre.
Avatar billede jytte Nybegynder
18. september 2004 - 21:31 #4
Måske vil opgaven være nemmere hvis jeg accepterer at 1. ciffer kan være nul men til gengæld vil kræve at man må kunne trykke på backspace (som man jo ikke kan i den kode du har foreslået).
Avatar billede roenving Novice
18. september 2004 - 21:39 #5
Så er jeg bange for at man må over i sådan noget:

<script language="javascript" type="text/javascript">var old = "";</script>
<form id="minForm" name="minForm">
<input id="minInput" name="minInput" type="text" value="" onkeyup="if(!/^[1-9]\d{0,5}$/.test(this.value))this.value=old;old=this.value;">
</form>
Avatar billede jytte Nybegynder
18. september 2004 - 21:44 #6
har du selv prøvet den ?

så vidt jeg har afprøvet opfører den sig som et helt almindeligt text input-felt.
Avatar billede roenving Novice
18. september 2004 - 21:47 #7
Den er irriterende, men det er nu godt nok svært at skrive andet end det tilsigtede !-)
Avatar billede jytte Nybegynder
18. september 2004 - 21:48 #8
den forstod jeg vist ikke
Avatar billede roenving Novice
18. september 2004 - 21:51 #9
Den opfylder alle dine punkter, men det er hammerirriterende at den tekst man skriver bliver væk _efter_ at den er skrevet i feltet ...
Avatar billede jytte Nybegynder
18. september 2004 - 21:58 #10
øh -- snakker vi om den samme kode ? hos mig kan jeg skrive hvadsomhelst i feltet og der er ikke noget der bliver væk (heller ikke bogstaver) ...
Avatar billede roenving Novice
18. september 2004 - 22:01 #11
Den kode, jeg smed 21:39:16, opfylder præcis dine krav ...

-- men det er uhensigtsmæssigt, at nyindtastninger først forsvinder, når man slipper tasterne !-)

-- hvis den ikke opfører sig sådan hos dig, må du fortælle under hvilke betingelser, du tester ...
Avatar billede jytte Nybegynder
18. september 2004 - 22:07 #12
<script language="javascript" type="text/javascript">
var old = "";

function getCharCode(e){
return (e.which)?e.which:e.keyCode;
}
function test(elm,e){
  if(!e)e = event;
  val = elm.value + String.fromCharCode(getCharCode(e));
  return /^[1-9]\d{0,5}$/.test(val);
}

</script>
<form id="minForm" name="minForm">
<input id="minInput" name="minInput" type="text" value="" onkeyup="if(!/^[1-9]\d{0,5}$/.test(this.value))this.value=old;old=this.value;">
</form>

jeg bruger explorer 6
Avatar billede roenving Novice
18. september 2004 - 22:11 #13
Fungerer ganske fortrinligt hos mig, og det både i IE og Mozilla !-)

-- og det springende punkt for hvor den virker er regExp'en, så den burde virke i alle browsere efter ca. 1998 ...
Avatar billede jytte Nybegynder
18. september 2004 - 22:17 #14
rettelse jeg bruger netscape 6
Jeg sad og testede i editplus og havde glemt at defaultbrowseren på min hjemmepc er netscape.
I explorer 6 virker den som du beskriver.
Jeg har iøvrigt også opdaget dit funktionsnavn test i onkeyup nok ikke er det samme som i dit første kodeeksempel.
Avatar billede roenving Novice
18. september 2004 - 22:20 #15
Nej, du behøver kun de 4 linjer fra 21:39:16 ...

-- og Netscape 6 er (afhængig af underversion !-) stort set den samme browser som Mozilla 1.2, men den kender da udmærket til regExps ...

Prøv (for at teste lidt mere !-) at erstatte if i eventen med alert !o]
Avatar billede jytte Nybegynder
18. september 2004 - 22:29 #16
Netscape 6.2.1 giver ingen alert på onkeydown men det gør explorer 6
Avatar billede roenving Novice
18. september 2004 - 22:33 #17
Hrm ...

-- jeg var godt klar over at .test på en RegExp var en af de senere, men jeg troede også at Netscape supportede den ting selv !-)

-- men så må vi vende noget om:

<script language="javascript" type="text/javascript">var old = "";</script>
<form id="minForm" name="minForm">
<input id="minInput" name="minInput" type="text" value="" onkeyup="if(!this.value.match(/^[1-9]\d{0,5}$/))this.value=old;old=this.value;">
</form>

-- skulle være kompatibel længere tilbage ...
Avatar billede jytte Nybegynder
18. september 2004 - 22:34 #18
Endnu en rettelse
Jeg troede editplus brugte min defaultbrowser som er netscape, men da jeg ligge prøvede med alerten på onkeyup direkte i netscape kom der faktisk en alert. Hvilken brower det så er editplus bruger er mig lidt en gåde, men det må være en der ikke reagerer på onkeyup -- mystisk
Avatar billede jytte Nybegynder
18. september 2004 - 22:46 #19
Anyway -- tak for hjælpen
Husk at lægge et svar
og godnat
Avatar billede roenving Novice
18. september 2004 - 22:50 #20
-- og i den forrige udgave af Stone's WebWriter (som jeg bruger !-) var der en del events, som ikke fungerede i den interne, men med v4 er de fleste kommet med ...

-- velbekomme '-)
Avatar billede roenving Novice
19. september 2004 - 16:58 #21
-- og tak for point ;~}
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