Avatar billede notebookonline Nybegynder
01. marts 2007 - 10:16 Der er 10 kommentarer og
1 løsning

Rettelse til script

Jeg vil gerne have lavet en mindre ændring af mit script:
I bunden af scriptet ses denne linie: if (postnr==true&&navntjek==true&&addresetjek==true&&bytjek==true&&tlftjek==true)

Her checkes for om variablerne er sande, men det virker ikke som det skal. Hvis sand skal order2.html afvikles, hvis falsk skal scriptet gentages fra starten, det kan jeg ikke lige greje.

Er der en der har en ide?




<script>

function starttjek()
{
var inputs =" ";
var inputs = document.getElementsByTagName("option");

    for(var u=0; u<inputs.length; u++)                        {
        if(inputs[u].getAttribute('value')=='2625')   
        {
            var postnr = false;
            if(inputs[u].selected==true)
            {
                var post = document.getElementsByTagName("input");
                for(var p=0; p<post.length; p++)                                        {
                    if(post[p].getAttribute('name')=='zipcode')   
                        {
                            if (post[p].value.length ==4)
                            {
                                var reg = new RegExp("([0-9]{4})");
                                if (reg.test(post[p].value))
                                {
                                   
                                    postnr=true;
                                }
                                var reg = new RegExp("([0-9]{4})");
                                if (!reg.test(post[p].value))
                                {
                                    alert("Du skal indtaste et gyldig postnummer for Danmark bestående af 4 tal");
                                    postnr=false;
                                    post[p].value ="";        
                                }
                            }
                            if (post[p].value.length !=4)
                            {
                                    alert("Du skal indtaste et gyldig postnummer for Danmark bestående af 4 tal");
                                    postnr=false;
                                    post[p].value ="";        
                            }                                       
                        }
                    }
               
                var cvr = document.getElementsByTagName("input");
                for(var c=0; c<cvr.length; c++)                                        {
                    if(cvr[c].getAttribute('name')=='cvrnr')   
                        {
                            if (cvr[c].value.length >0)
                            {
                                if (cvr[c].value.length ==8)
                                {
                                   
                                    postnr=true;
                                }
                                if (cvr[c].value.length !=8)
                                {
                                    alert("Du skal indtaste et gyldig CVR nummer for Danmark bestående af 8 tal");
                                    postnr=false;
                                    cvr[c].value ="";        
                                }
                            }           
                        }
                    }
                   
            }
            if(inputs[u].selected==false)
            {
                var postnr = true;
            }       
      }
  }
    var navntjek=true;
    var navn = document.getElementsByTagName("input");
    for(var n=0; n<navn.length; n++)                            {
        if(navn[n].getAttribute('name')=='name')   
            {
            if (navn[n].value.length <1)
                {
                alert("Du skal indtaste dit navn, både for og efternavn");
                navntjek=false;
                  }                       
            }
        }
    var addresetjek=true;
    var addrese = document.getElementsByTagName("input");
    for(var a=0; a<addrese.length; a++)                            {
        if(addrese[a].getAttribute('name')=='address')   
            {
                /*var reg = new RegExp("([a-zA-Z]{4}[0-9]{1})");
                if (!reg.test(post[a].value))
                {               
                    alert("Du skal indtaste din adresse, husk nummeret");
                    addresetjek=false;
                  }        */               
            }
        }

    var bytjek=true;
    var by = document.getElementsByTagName("input");
    for(var b=0; b<by.length; b++)                   
        {
        if(by[b].getAttribute('name')=='city')   
            {
            if (by[b].value.length <1)
                {
                alert("Du skal indtaste din by");
                bytjek=false;
                  }                       
            }
        }
    var tlftjek=true;
    var tlf = document.getElementsByTagName("input");
    for(var t=0; t<tlf.length; t++)                   
        {
        if(tlf[t].getAttribute('name')=='phone')   
            {
            if (tlf[t].value.length <1)
                {
                alert("Du skal indtaste dit telefonnummer");
                tlftjek=false;
                  }                       
            }
        }




if (postnr==true&&navntjek==true&&addresetjek==true&&bytjek==true&&tlftjek==true)

{
    var inputs ="";
    var inputs = document.getElementsByName("myform");

        for(var u=0; u<inputs.length; u++)                                {
             
                inputs[u].onsubmit ="order2.html";        
                inputs[u].action="order2.html";

            }
}
}

var inputs ="";
var inputs = document.getElementsByName("myform");

    for(var u=0; u<inputs.length; u++)                        {
       
        inputs[u].onsubmit =starttjek;        
        inputs[u].action="";
    }


</script>
Avatar billede softspot Forsker
01. marts 2007 - 10:29 #1
Jeg skulle mene at det var noget i stil med dette:


<script type="text/javascript">

function starttjek()
{
  var inputs =" ";
  var inputs = document.getElementsByTagName("option");

  for(var u=0; u<inputs.length; u++)                       
  {
    if(inputs[u].getAttribute('value')=='2625')   
    {
      var postnr = false;
      if(inputs[u].selected==true)
      {
        var post = document.getElementsByTagName("input");
        for(var p=0; p<post.length; p++)                                       
        {
          if(post[p].getAttribute('name')=='zipcode')   
          {
            if (post[p].value.length ==4)
            {
              var reg = new RegExp("([0-9]{4})");
              if (reg.test(post[p].value))
              {
                postnr=true;
              }
              var reg = new RegExp("([0-9]{4})");
              if (!reg.test(post[p].value))
              {
                alert("Du skal indtaste et gyldig postnummer for Danmark bestående af 4 tal");
                postnr=false;
                post[p].value ="";       
              }
            }
            if (post[p].value.length !=4)
            {
              alert("Du skal indtaste et gyldig postnummer for Danmark bestående af 4 tal");
              postnr=false;
              post[p].value ="";       
            }                                       
          }
        }
         
        var cvr = document.getElementsByTagName("input");
        for(var c=0; c<cvr.length; c++)                                       
        {
          if(cvr[c].getAttribute('name')=='cvrnr')   
          {
            if (cvr[c].value.length >0)
            {
              if (cvr[c].value.length ==8)
              {
                postnr=true;
              }
              if (cvr[c].value.length !=8)
              {
                alert("Du skal indtaste et gyldig CVR nummer for Danmark bestående af 8 tal");
                postnr=false;
                cvr[c].value ="";       
              }
            }           
          }
        }
      }
      if(inputs[u].selected==false)
      {
        var postnr = true;
      }       
    }
  }
  var navntjek=true;
  var navn = document.getElementsByTagName("input");
  for(var n=0; n<navn.length; n++)                           
  {
    if(navn[n].getAttribute('name')=='name')   
    {
      if (navn[n].value.length <1)
      {
        alert("Du skal indtaste dit navn, både for og efternavn");
        navntjek=false;
      }                       
    }
  }
  var addresetjek=true;
  var addrese = document.getElementsByTagName("input");
  for(var a=0; a<addrese.length; a++)                           
  {
    if(addrese[a].getAttribute('name')=='address')   
    {
      /*var reg = new RegExp("([a-zA-Z]{4}[0-9]{1})");
      if (!reg.test(post[a].value))
      {               
        alert("Du skal indtaste din adresse, husk nummeret");
        addresetjek=false;
      }        */               
    }
  }

  var bytjek=true;
  var by = document.getElementsByTagName("input");
  for(var b=0; b<by.length; b++)                   
  {
    if(by[b].getAttribute('name')=='city')   
    {
      if (by[b].value.length <1)
      {
        alert("Du skal indtaste din by");
        bytjek=false;
      }                       
    }
  }
  var tlftjek=true;
  var tlf = document.getElementsByTagName("input");
  for(var t=0; t<tlf.length; t++)                   
  {
    if(tlf[t].getAttribute('name')=='phone')   
    {
      if (tlf[t].value.length <1)
      {
        alert("Du skal indtaste dit telefonnummer");
        tlftjek=false;
      }                       
    }
  }

  if (postnr==true&&navntjek==true&&addresetjek==true&&bytjek==true&&tlftjek==true)
  {
    return true;
  }

  return false;
}

var inputs = document.getElementsByName("myform");

for(var u=0; u<inputs.length; u++)                       
{
  inputs[u].onsubmit = function() { starttjek() };       
  inputs[u].action = "order2.html";
}


</script>
Avatar billede softspot Forsker
01. marts 2007 - 10:40 #2
Du kan, såvidt jeg ved, kun submitte en formular ad gangen, så derfor kunne du måske endda med fordel udskifte flg. stump kode

<script type="text/javascript">
//
// selve starttjek-funktionen er som vist før - så den er udeladt her...
//
var inputs = document.getElementsByName("myform");

for(var u=0; u<inputs.length; u++)                       
{
  inputs[u].onsubmit = function() { starttjek() };       
  inputs[u].action = "order2.html";
}
</script>

med noget kode i selve HTML-formularen, som vist herunder. Det er nok lidt mere intuitivt at læse:


<form action="order2.html" method="post" onsubmit="return starttjek()">
...
</form>
Avatar billede notebookonline Nybegynder
01. marts 2007 - 11:21 #3
Det virker ikke helt som det skal.

Hvis var = sand skal der ikke ske noget
Hvis var = falsk skal order2 udføres.


NB: Jeg kan ikke bruge form action i min shop da det ikke tillades.
Avatar billede softspot Forsker
01. marts 2007 - 11:38 #4
Ok, så havde jeg misforstået, men jeg vil mene at hvis du ændrer det sidste af koden til flg.:

  if (postnr==true&&navntjek==true&&addresetjek==true&&bytjek==true&&tlftjek==true)
  {
    return false;
  }

  return true;
}

var inputs = document.getElementsByName("myform");

for(var u=0; u<inputs.length; u++)                       
{
  inputs[u].onsubmit = function() { return starttjek() };       
  inputs[u].action = "order2.html";
}
</script>

BEMÆRK: der er byttet rundt på return-værdierne i funktionen starttjek OG der er kommet en return på kaldet til starttjek i den anonyme funktion til sidst.
Avatar billede notebookonline Nybegynder
01. marts 2007 - 11:57 #5
Nu virker det næsten, når var er falsk returneres til order2.
Men er var sand, kan man ikke klikke på submit ?
Avatar billede softspot Forsker
01. marts 2007 - 14:19 #6
Hmm... jeg har svært ved at gennemskue hvordan den forumlar skal fungere, men den skal altså submitte i begge tilfælde, bare til forskellige adresser...? Så skal din oprindelige kode i den sidste if-sætning jo aligevel være der :)

  if (postnr==true&&navntjek==true&&addresetjek==true&&bytjek==true&&tlftjek==true)
  {
    var inputs = document.getElementsByName("myform");

    for(var u=0; u<inputs.length; u++)                       
    {
      inputs[u].action = "";
    }
  }

  return true;
}

var inputs = document.getElementsByName("myform");

for(var u=0; u<inputs.length; u++)                       
{
  inputs[u].onsubmit = function() { return starttjek() };       
  inputs[u].action = "order2.html";
}
</script>
Avatar billede notebookonline Nybegynder
01. marts 2007 - 15:09 #7
Er det ikke muligt at skrive, hvortil den skal submitte hvis var er true ?

Feks. noget i stil med:

if (postnr==true&&navntjek==true&&addresetjek==true&&bytjek==true&&tlftjek==true)
then redirect www.test.dk/side1.html
else redirect www.test.dk/side2.html
end if

Eller noget i den stil, jeg er ikke så stiv i java
Avatar billede softspot Forsker
01. marts 2007 - 15:14 #8
Jo, jeg skulle mene det bare er at følge samme opskrift som i de sidste 7 liniers kode, nemlig at indsætte adressen i action (her har jeg indsat en reference til side1.html på det lokale domæne):

  if (postnr==true&&navntjek==true&&addresetjek==true&&bytjek==true&&tlftjek==true)
  {
    var inputs = document.getElementsByName("myform");

    for(var u=0; u<inputs.length; u++)                       
    {
      inputs[u].action = "side1.html";
    }
  }

  return true;
}

var inputs = document.getElementsByName("myform");

for(var u=0; u<inputs.length; u++)                       
{
  inputs[u].onsubmit = function() { return starttjek() };       
  inputs[u].action = "order2.html";
}
</script>
Avatar billede notebookonline Nybegynder
01. marts 2007 - 15:29 #9
Ja selvfølgelig ;-)

Så virker skidtet.
Svar for dine velfortjente points.
Avatar billede softspot Forsker
01. marts 2007 - 15:55 #10
Velbekomme :)
Avatar billede softspot Forsker
01. marts 2007 - 16:06 #11
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