Avatar billede gliczynski Nybegynder
15. november 2001 - 16:43 Der er 14 kommentarer og
1 løsning

Validering ved \" onblur \"

Halløjsa...
Jeg har to felter som SKAL udfyldes. Det ene felt er på 6 tegn det andet på 4 tegn.

Jeg har forsøgt at lave en stump JS som kigger på længden af feltet ved \"onblur\", og melder fejl ved forlidt indtastet. Det virker også fint nok.
Men problemet ligger i at jeg ryger over i det næste felt, når jeg laver ONBLUR(TAB), og det vil sige at det felt jeg kommer over i tomt, og hvis der ikke er indtastet det rigtig antal tegn i det forrige felt skal jeg tilbage til dette. Dette resulter i at jeg får en uendelig lykke. Fordi det felt jeg nu står i er tomt og derved også melder fejl...

Her er noget kode:
Kalder den her: onblur=\"ch_am_no(6,\'fejl\',this);\"

function ch_am_no(amount,errormessage,input)
{
if(input.value.length <  amount )
        {
        alert(errormessage);
        input.value=\"\";
        input.focus();   
        }
}

Jeg vil blive glad for lidt hjælp... og jeg giver den højprioritet og go\'e point...
Avatar billede olebole Juniormester
15. november 2001 - 16:49 #1
<ole>
Tjaaahhhh....hvad vil du helst undvære? Du får nok ikke både onblur, tabbing og sletning af feltet til at spille sammen, men det har du jo allerede opdaget  :)
/mvh
</bole>
Avatar billede zarthax Nybegynder
15. november 2001 - 16:49 #2
Det kan laves med en simpel HTML kode ........
Finder den lige
NB: 250 Pointer lidt rigeligt og det hjælper ikke på kvaliteten af svaret og ej heller hvor hurtigt det bliver besvaret ...
15-20 point for dette og jeg ville være tilfreds :)
Avatar billede olebole Juniormester
15. november 2001 - 16:50 #3
Det kan *aldrig* laves i ren HTML  =o)
/mvh
Avatar billede gliczynski Nybegynder
15. november 2001 - 16:53 #4
onblur functionen er nok det vigtigste, som så validere feltet...
Avatar billede zarthax Nybegynder
15. november 2001 - 16:54 #5
Hmmm... jeg har muligvis misforstået et eller andet nu ???
Skulle der ikke kun tælles det antal bogstaver eller tal der er specificeret ???
Avatar billede olebole Juniormester
15. november 2001 - 16:56 #6
Hvad med at skrive :

input.select();

...i stedet for:

input.value=\"\";

...og så må du meget gerne skrue gevaldigt ned for pointtallet. Hvis du bruger mit forslag, får Admin alt over 30 points ...der er inflation nok i pointssytemet  ;o)
/mvh
Avatar billede gliczynski Nybegynder
15. november 2001 - 17:00 #7
Sorry... Det virker ikke ... Jeg får stadig en løkke...
Avatar billede gliczynski Nybegynder
15. november 2001 - 17:00 #8
Og sorry på det med point\'ne...
Avatar billede olebole Juniormester
15. november 2001 - 17:21 #9
No prob ....jeg ved godt, det var venligt ment  ;o)
Prøv:

var isNoError = true;
function ch_am_no(amount,errormessage,input) {
    if(isNoError && input.value.length < amount) {
        isNoError = false;
        alert(errormessage);
        input.select();
        setTimeout(\"isNoError=true\",100);
    }
}

/mvh
Avatar billede gliczynski Nybegynder
16. november 2001 - 09:19 #10
Tak for 1... Det virker optimalt... THX
Avatar billede gliczynski Nybegynder
16. november 2001 - 09:58 #11
Men det virker ikke i NS....
Avatar billede olebole Juniormester
16. november 2001 - 10:00 #12
Jeg har oprettet et \'spm.\' til dig:  http://www.eksperten.dk/spm/134575  ;o)
/mvh
Avatar billede gliczynski Nybegynder
16. november 2001 - 10:01 #13
Jo, hvis du ændre det til .focus() i steden for .select().. select() virker ikke NS
Avatar billede olebole Juniormester
16. november 2001 - 10:30 #14
Jojo...select virker fint. Gør sådan i stedet:

var inp;
var isNoError = true;
function ch_am_no(amount,errormessage,thisInput) {
    if(isNoError && thisInput.value.length < amount) {
        isNoError = false;
        alert(errormessage);
        inp = thisInput;
        setTimeout(\"setFoc()\",100);
    }
}
function setFoc() {
    inp.select();
    isNoError=true
}

...*så* virker det også i NS6+  ;o)
/mvh
Avatar billede gliczynski Nybegynder
16. november 2001 - 10:33 #15
THX..
Jeg har ellers gjort således...

var ns4 = (document.layers)? true:false
var ie4 = (document.all)? true:false
var isNoError = true;
function ch_am_no(amount,errormessage,input) {
    if(isNoError && input.value.length < amount) {
        isNoError = false;
        alert(errormessage);
        if( ie4 ) input.select();
        else input.focus();
        setTimeout(\"isNoError=true\",100);
    }
}
Jeg ved så ikke om det virker i NS6... men i NS4 gør det..
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