Avatar billede champ1 Nybegynder
17. februar 2006 - 22:37 Der er 19 kommentarer

Tving input til at indeholde

Hvordan sørger jeg for at der KUN skrives tal i mit input-felt?

Den skal ikke fortælle at der er gjort noget galt, den skal blot lade være med at tilføje de invalide tegn.
Avatar billede gizmo-gizmo Nybegynder
17. februar 2006 - 22:58 #1
Hvad med:

<script type="text/javascript">
function check(felt)
{
    if (isNaN(felt.value))
    {
        felt.value = felt.value.substring(0, felt.value.length-1);
    }
}
</script>

<input type="text" name="yay" onkeydown="check(this);">
Avatar billede champ1 Nybegynder
17. februar 2006 - 23:03 #2
Det fungerer ikke særlig godt :D

Er der virkelig ikke andre muligheder? :)
Avatar billede gizmo-gizmo Nybegynder
17. februar 2006 - 23:06 #3
Jo, men hvad er problemet da? ;)
Avatar billede champ1 Nybegynder
17. februar 2006 - 23:09 #4
At den ikke fungerer sig helt acceptabelt. Den tilføjer tegnet jeg tilføjer, og fjerner det ikke før et nyt tegn sættes ind.
Avatar billede olebole Juniormester
17. februar 2006 - 23:13 #5
<ole>

<input type="text" onkeypress="e=event;kC=e.which||e.keyCode;if((kC<48||kC>57)&&kC!=8)return false">

/mvh
</bole>
Avatar billede gizmo-gizmo Nybegynder
17. februar 2006 - 23:14 #6
Ændre onkeydown til onkeyup så skulle det fungere.
Avatar billede gizmo-gizmo Nybegynder
17. februar 2006 - 23:15 #7
right, Olebole....igen...  jeg er færdig som popsanger.
Avatar billede gizmo-gizmo Nybegynder
17. februar 2006 - 23:16 #8
Men smart, egentlig :-)
Avatar billede champ1 Nybegynder
17. februar 2006 - 23:17 #9
Kanon olebole. Men nu kan jeg hverken markere, klikke delete eller lignende. Kan dette undgåes?
Avatar billede olebole Juniormester
17. februar 2006 - 23:21 #10
"jeg er færdig som popsanger" ... rolig nu, sålænge Lars Lilholt stadig får lov at gøre lyde i tilsuttede mikrofoner, er _ingen_ helt færdig  ;D
Avatar billede olebole Juniormester
17. februar 2006 - 23:26 #11
*ROTFLMAO* 'tilsuttede mikrofoner' ... og så var det zq ikke negang det, jeg ville skrive  :D

champ1 >>
    <input type="text" onkeypress="e=event;kC=e.which||e.keyCode;if((kC<48||kC>57)&&kC!=8&&kC!=37&&kC!=39)return false">
Avatar billede champ1 Nybegynder
17. februar 2006 - 23:29 #12
Kan man ikke blot sætte et regexp-udtryk i en variabel, og så tjekke om den valgte tast er blandt disse?

if( ... )
{
// lækkert valg af taster :)
return true;
}
else
{
// ikke iblandt valide tegn (regexp)
return false
}
Avatar billede olebole Juniormester
17. februar 2006 - 23:38 #13
Jo, men RegExp bliver udtrykket ikke mindre eller mere 'sexy' af ... og så er RegExp en temmelig tung maskine. Dette er nok lidt mere sexy, end det, jeg skrev før:

<script type="text/JavaScript">
function testNumInp(e) {
    var kC = e.which||e.keyCode;
    return ((kC>47&&kC<58)||kC==8||kC==37||kC==39);
}
</script>
<input type="text" onkeypress="return testNumInp(event)">
Avatar billede champ1 Nybegynder
17. februar 2006 - 23:46 #14
Det var fordi jeg gerne på et senere tidspunkt ville tilføje brugen af bogstaver m.v.

Reg.exp. ville uden tvivl være det essientielle :D
Avatar billede olebole Juniormester
18. februar 2006 - 00:21 #15
Jamen, hvis du også vil validere andre tegn, må du fortælle det - for så kan det meget vel komme til at se helt anderledes ud. Det er ikke helt let, når default-event'en skal cancel'es (tegnet ikke bliver skrevet ud) og scriptet skal virke X-browser ... og det skal det. Derfor får du det heller ikke med RegExp  :)
Avatar billede olebole Juniormester
18. februar 2006 - 00:24 #16
Baaahhhh .... (17/02-2006 23:38:51) duer ikke engang. Apostrof smutter med igennem - da den både udløser en keyCode på 39 og 191  :o|
Avatar billede olebole Juniormester
18. februar 2006 - 01:16 #17
Grrrrrrr ....... FU..ING, #!@.*% BROWSEREEEEEEEEEE ...!!!!!  :o[
Jeg må desværre opgive den mere elegante løsning, da de forskellige browsere er _så_ uenige om key-events, at det nærmest er skandaløst! Derfor bliver det denne, hvor man kan skrive alle tegn - men de bliver øjeblikkeligt slettet, hvis der ikke er tale om tal:

<script type="text/JavaScript">
function testNumInp(oElm) {
    oElm.value = oElm.value.replace(/[^\d]+/, "");
}
</script>
<input type="text" onkeyup="testNumInp(this)">

- det så zq ellers lige så lovende ud ... men det har man vel også sagt om Louise Frevert, da hun lå i vuggen  :)
Avatar billede lemche Nybegynder
21. februar 2006 - 16:30 #18
Hej Olebole

Jeg har prøvet din testNumInp af og den virker næsten  :-)
% og ' kan stadig tastes ind i input feltet.
Kan man få funktionen til også at acceptere TAB så man kan tabbe sig til næste felt.

/Lemche
Avatar billede champ1 Nybegynder
23. februar 2006 - 22:23 #19
smid et svar olebole
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