Avatar billede wolfgang Praktikant
20. juni 2006 - 08:46 Der er 13 kommentarer og
1 løsning

Validering af tal værdi

Hej Eksperter,

Jeg har 3 dropDowns i min formular. De bruges til at vælge dato (dag, måned, år).

Nu er det således at brugeren ikke må kunne vælge alle datoer fra og med den 17. juli 2006 - 31. juli 2006.

Kan I hjælpe mig med en valideringsrutine til dette?

jeg glæder mig til at høre fra jer.

MVH
Henrik
Avatar billede jensgram Nybegynder
20. juni 2006 - 08:55 #1
Pseudo:

Hent de tre talværdier ud og sæt den sammen til tal på formen: YYYYMMDD

Dit forbudte interval er [20060717, 20060731]

Du kan nu teste om YYYYMMDD er udenfor dette interval.


Dette er helt klart en af de nemme løsninger, men måske ikke så pæn...

- Jens
Avatar billede jensgram Nybegynder
20. juni 2006 - 09:00 #2
Ex:

y_felt = document.getElementById('mit_y_input_felt');
y = y_felt.options[y_felt.selectedIndex].value;

m_felt = document.getElementById('mit_m_input_felt');
m = m_felt.options[m_felt.selectedIndex].value;

d_felt = document.getElementById('mit_d_input_felt');
d = d_felt.options[d_felt.selectedIndex].value;

selDate = (y + m + d) * 1; // Var strenge - nu tal

if (selDate < 20060717 || selDate > 20060731) {
    alert('NEJ');
}
Avatar billede wolfgang Praktikant
20. juni 2006 - 09:37 #3
Hej Jens, Tak for dit svar.

Jeg har nu forsøgt at rette det lidt til uden held.

y_felt = document.getElementById('levdateYear');
y = y_felt.options[y_felt.selectedIndex].value;
m_felt = document.getElementById('levdateMonth');
m = m_felt.options[m_felt.selectedIndex].value;
d_felt = document.getElementById('levdateDay');
d = d_felt.options[d_felt.selectedIndex].value;
selDate = (y + m + d) * 1; // Var strenge - nu tal
if (selDate >= 20060717 || selDate <= 20060731) { frmErr = frmErr + 'Den valgte dato ligger i vores ferieperiode.\n'; }   

Den melder fejl lige meget hvilken dato man vælger.

Håber du kan hjælpe.

MVH /Henrik
Avatar billede ldanielsen Nybegynder
20. juni 2006 - 09:51 #4
hvilken linie giver den fejl i?
Avatar billede wolfgang Praktikant
20. juni 2006 - 09:54 #5
Jeg undskylder... Den melder ikke script fejl.
Valideringen afviser alle datoer, også dem er ikke er indenfor intervallet.
Avatar billede ldanielsen Nybegynder
20. juni 2006 - 09:59 #6
if (selDate >= 20060717 || selDate <= 20060731) {

skal være

if (selDate >= 20060717 && selDate <= 20060731) {
Avatar billede wolfgang Praktikant
20. juni 2006 - 10:05 #7
Jeg har implementeret din rettelse.
Nu reagere den slet ikke på den del af valideringen.

Hele funktionen:
function validateform()
{
    var frmErr = '';
    var mlevdateDay = document.getElementById("levdateDay").value
    var mlevdateMonth = document.getElementById("levdateMonth").value;
    var mlevdateYear = document.getElementById("levdateYear").value;
    if ((mlevdateDay=='') || (mlevdateMonth=='') ||(mlevdateYear==''))  { frmErr = frmErr + 'Der skal vælges en leveringsdato\n'; }   
   
    y_felt = document.getElementById('levdateYear');
    y = y_felt.options[y_felt.selectedIndex].value;
    m_felt = document.getElementById('levdateMonth');
    m = m_felt.options[m_felt.selectedIndex].value;
    d_felt = document.getElementById('levdateDay');
    d = d_felt.options[d_felt.selectedIndex].value;
    selDate = (y + m + d) * 1; // Var strenge - nu tal
    if (selDate >= 20060717 && selDate <= 20060731) { frmErr = frmErr + 'Den valgte dato ligger i vores ferieperiode.\n'; }   
   
    var mlevtimehour = document.getElementById("levtimehour").value;
    var mlevtimeminute = document.getElementById("levtimeminute").value;
    if ((mlevtimehour=='') || (mlevtimeminute=='')) { frmErr = frmErr + 'Der skal vælges et leveringstidspunkt\n'; }   
    var mguesttimehour = document.getElementById("guesttimehour").value;
    var mguesttimeminute = document.getElementById("guesttimeminute").value;
    if ((mguesttimehour=='') || (mguesttimeminute=='')) { frmErr = frmErr + 'Der skal vælges et ankomst tidspunkt\n'; }       

   
    document.formvalidation = (frmErr=='');
    if (frmErr!='') { alert(frmErr) }   
}
Avatar billede jensgram Nybegynder
20. juni 2006 - 10:22 #8
Hvad indeholder "selDate", hvis du alerter den?
Avatar billede wolfgang Praktikant
20. juni 2006 - 12:21 #9
Hvordan kan jeg bedst "udskrive" værdien?
Avatar billede jensgram Nybegynder
20. juni 2006 - 13:12 #10
function validateform()
{
    var frmErr = '';
    var mlevdateDay = document.getElementById("levdateDay").value
    var mlevdateMonth = document.getElementById("levdateMonth").value;
    var mlevdateYear = document.getElementById("levdateYear").value;
    if ((mlevdateDay=='') || (mlevdateMonth=='') ||(mlevdateYear==''))  { frmErr = frmErr + 'Der skal vælges en leveringsdato\n'; } 
 
    y_felt = document.getElementById('levdateYear');
    y = y_felt.options[y_felt.selectedIndex].value;
    m_felt = document.getElementById('levdateMonth');
    m = m_felt.options[m_felt.selectedIndex].value;
    d_felt = document.getElementById('levdateDay');
    d = d_felt.options[d_felt.selectedIndex].value;
    selDate = (y + m + d) * 1; // Var strenge - nu tal

alert("|" + selDate + "|"); // "|" skal bare vise præcist hvad den indeholder.

/* evt
alert("d=" + d + "|");
alert("m=" + m + "|");
alert("y=" + y + "|");
*/

    if (selDate >= 20060717 && selDate <= 20060731) { frmErr = frmErr + 'Den valgte dato ligger i vores ferieperiode.\n'; } 
 
    var mlevtimehour = document.getElementById("levtimehour").value;
    var mlevtimeminute = document.getElementById("levtimeminute").value;
    if ((mlevtimehour=='') || (mlevtimeminute=='')) { frmErr = frmErr + 'Der skal vælges et leveringstidspunkt\n'; } 
    var mguesttimehour = document.getElementById("guesttimehour").value;
    var mguesttimeminute = document.getElementById("guesttimeminute").value;
    if ((mguesttimehour=='') || (mguesttimeminute=='')) { frmErr = frmErr + 'Der skal vælges et ankomst tidspunkt\n'; }     

 
    document.formvalidation = (frmErr=='');
    if (frmErr!='') { alert(frmErr) } 
}
Avatar billede wolfgang Praktikant
20. juni 2006 - 15:03 #11
Hej Jens, tak for din gode vejledning.
Fejlen var grundet i at den 7. måned stod skrevet som 7 og ikke 07.

Tak for tålmodigheden.

Da du stod for svaret og løsningen, har du fuldt ud fortjent pointene.
- Opret venligst et svar.
Avatar billede jensgram Nybegynder
20. juni 2006 - 18:15 #12
Ah ok - du så jo selv den første bøf ved min validering - der skulle selvfølgelig have stået "JA", da det jo netop VAR gyldigt...
Avatar billede wolfgang Praktikant
20. juni 2006 - 18:17 #13
Tak for hjælpen!
Avatar billede jensgram Nybegynder
20. juni 2006 - 20:10 #14
Så lidt - takker for pts.
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