Avatar billede cultx Nybegynder
03. oktober 2003 - 14:09 Der er 9 kommentarer og
1 løsning

Skal være et mellemrum!

Hej eksperter!

Har en validering af et dato felt, som jeg skal have udvidet til at den istedet for kun "dd-mm-åååå" kan tage "dd-mm-åååå tt:mm", men det er ikke lykkedes mig at validere på at tegn 10 skal være et mellemrum, syntes jeg har prøvet alt...!

Min kode:
      if(myDate.length == 16){
            if(!(myDate.charAt(10)==" ")){
                  alert("fejl: \""+myDate.charAt(10)+"\"")
                  return false
            }
      }

Håber nogen kan hjælpe???
Avatar billede stefanfuglsang Juniormester
03. oktober 2003 - 14:13 #1
Jeg er ikke Java-kyndig men skal length ikke være length()?
+ semikolon efter false?
Avatar billede di8leva Nybegynder
03. oktober 2003 - 14:22 #2
det her virker hamrende godt =)

<html>
<script language="JavaScript">
function check()
{
    myDate = document.getElementById('text').value;
    if(myDate.length == 16)
    {
        if(!(myDate.charAt(10)==" "))
        {
            alert("fejl: \""+myDate.charAt(10)+"\"");
            return false;
        }
    }
}
</script>
<input type="text" id="text"><br>
<input type="button" value="Check" onClick="check();">
Avatar billede cultx Nybegynder
03. oktober 2003 - 14:31 #3
Hmmmm... Meget underligt, dit svar virker fint, men mit virker stadig ikke...

Her er hele koden, håber stadig på hjælp... ;-)

unction checkDate(myDate){
      var myDate = myDate.replace(/^\s*(.*?)\s*$/, "$1");
      if(myDate != "" && myDate.length != 10 && myDate.length != 16){
            return false
      }
      if(myDate.length == 16){
            if(!(myDate.charAt(10)==" ")){
                  alert("Fejl 10: \""+myDate.charAt(10)+"\"")
                  return false
            }else if(myDate.charAt(13) != ":"){
                  alert("Fejl 13: \""+myDate.charAt(10)+"\"")
                  return false
            }
      }
      if(myDate.charAt(2) != "-" || myDate.charAt(5) != "-"){
            return false
      }
      for (i=0; i<myDate.length; i++) {
            if (i!=2 && i!=5 && i!=10 && i!=13) {
                  if (myDate.charAt(i) < "0" || myDate.charAt(i) > "9"){
                        return false
                  }
            }
      }
      return true
      }
Avatar billede di8leva Nybegynder
03. oktober 2003 - 14:36 #4
kigger
Avatar billede di8leva Nybegynder
03. oktober 2003 - 14:38 #5
hvis jag testar dette:

<html>
<script language="JavaScript">
function check(myDate)
{
    var myDate = myDate.replace(/^\s*(.*?)\s*$/, "$1");
    if(myDate != "" && myDate.length != 10 && myDate.length != 16)
    {
        return false
    }
    if(myDate.length == 16)
    {
        if(!(myDate.charAt(10)==" "))
        {
            alert("Fejl 10: \""+myDate.charAt(10)+"\"")
            return false
        }
        else if(myDate.charAt(13) != ":")
        {
            alert("Fejl 13: \""+myDate.charAt(10)+"\"")
            return false
        }
    }
    if(myDate.charAt(2) != "-" || myDate.charAt(5) != "-")
    {
        return false
    }
    for (i=0; i<myDate.length; i++)
    {
        if (i!=2 && i!=5 && i!=10 && i!=13)
        {
            if (myDate.charAt(i) < "0" || myDate.charAt(i) > "9")
            {
                return false
            }
        }
    }
    return true
}
</script>
<input type="text" id="text"><br>
<input type="button" value="Check" onClick="alert(check(document.getElementById('text').value));">


så kan jeg se at det virker (min alert-box siger true hvis indtastningen er korrekt)
er du sikker på at du sender in rætt stræng?

hvordan kalder du funktionen og hvar exakt er fejlen?
Avatar billede erikjacobsen Ekspert
03. oktober 2003 - 14:43 #6
Har du ikke fjernet mellemrummet med    var myDate = myDate.replace(/^\s*(.*?)\s*$/, "$1");
Avatar billede di8leva Nybegynder
03. oktober 2003 - 14:50 #7
erikjacobsen >>

nu er jeg ikke så go til reg.exp. men det virker som det står nu, så jeg tror ikke mellemrummet førsvinner.
Avatar billede cultx Nybegynder
03. oktober 2003 - 14:58 #8
Har selv fundet fejlen...

Det var fordi jeg havde brug "&nbsp;" som mellemrum mellem dato og tid, og det kunne JavaScriptet altså åben bart ikke forstå!!!
Avatar billede cultx Nybegynder
03. oktober 2003 - 14:59 #9
Nogen der evt. ved hvad myDate.charAt(10) skal være lige med når der er brugt "&nbsp;"...!

Bare nysgerig!
Avatar billede roenving Novice
03. oktober 2003 - 21:38 #10
myDate.substring(10,16)=="&nbsp;"
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