Avatar billede maskso Nybegynder
08. september 2009 - 20:15 Der er 14 kommentarer

IE - Firefox problem

Hej

Jeg har lavet en validering af en form. Det meste virker som det skal, men når jeg tester extention på en uploadfil, virker det kun i Explorer, men ikke i firefox.

Det samme gælder for en funktion, hvor jeg fjerne HTML tegn fra imputs.

Jeg har fundet ud af at det er denne linie i headeren på siden som gør at det ikke virker i firefox.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Det er kun den bageste del der gør udslaget... altså:  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Fjerner jeg linien, virker det fint, men det ødelægger siden, så jeg kan ikke fjerne den.


den del af scriptet der er problemer med, ser sådan ud:


    form = document.opretbruger;
      var ext = document.opretbruger.picturefile.value;
  ext = ext.substring(ext.length-3,ext.length);
  ext = ext.toLowerCase();
  if (ext == ''){
  ext = "jpg"}
  if (ext != ('jpg'|| 'Jpg'|| 'JPG'|| 'jpeg'|| 'Jpeg'|| 'JPEG')) {
    alert('Profilbillede: Du har valgt en '+ext+'-fil. Vælg venligst en jpg-fil.');
    return false;
      form.pass.focus();
    }



Og



function html2entities(){
var re=/[(<>"'&]/g
for (i=0; i<arguments.length; i++)
arguments[i].value=arguments[i].value.replace(re, function(m){return replacechar(m)})
}

function replacechar(match){
if (match=="<")
return "<"
else if (match==">")
return ">"
else if (match=="\"")
return """
else if (match=="'")
return "'"
else if (match=="&")
return "&"
}
Avatar billede erikjacobsen Ekspert
08. september 2009 - 21:05 #1
Jeg tror heller ikke det virker i IE ;)

  if (ext != ('jpg'|| 'Jpg'|| 'JPG'|| 'jpeg'|| 'Jpeg'|| 'JPEG')) {

skal være

  if (ext != 'jpg' && ext != 'Jpg' && ext !=  'JPG' && ext !=  'jpeg' &&  ext !=  'Jpeg' && ext !=  'JPEG')) {

(men det er lidt bøvlet at gøre det sådan)
Avatar billede olebole Juniormester
08. september 2009 - 21:06 #2
<ole>

Det tror pokker. Den DTD giver ikke mening, så prøv denne i stedet:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">[/div]

/mvh
</bole>
Avatar billede olebole Juniormester
08. september 2009 - 21:07 #3
Hmmm ... Eksperten og HTML-parsing  :o|

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Avatar billede maskso Nybegynder
08. september 2009 - 22:54 #4
Tak for svarene. Det har dog desværre ikke ændret på noget.

Jeg prøver lige at poste hele min validering, med risiko for at blive en smule til grin, da jeg er ret sikker på at det ikke er den helt korrekte måde at gøre det på :-)

Men det er den måde jeg hidtil har gjort det på, og det har virket fint indtil nu.

Det virker som sagt som det skal i IE (har testet i flere versioner). Det er kun i FF den er gal.

Jeg håber en af jer kan se om der skulle være nogle bugs (gerne let overskuelige ændringer, da jeg bestemt ikke er nogen JS haj, hvis nogen skulle være i tvivl ;-))



<script type="text/javascript">




    function tjeck()
   
    {
    form = document.opretbruger;
      if ( form.fornavn.value.length <= 1 ) {
      alert ("Du skal skrive dit fornavn.");
        return false;
      form.fornavn.focus();
    }
        {
    form = document.opretbruger;
      if ( form.fornavn.value.length >= 25 ) {
      alert ("Fornavnet er for langt.");
        return false;
      form.fornavn.focus();
    }
        {
    form = document.opretbruger;
      if ( form.efternavn.value.length <= 1 ) {
      alert ("Du skal skrive dit efternavn.");
        return false;
      form.efternavn.focus();
    }
            {
    form = document.opretbruger;
      if ( form.efternavn.value.length >= 30 ) {
      alert ("Efternavnet er for langt.");
        return false;
      form.efternavn.focus();
    }
                    {
    form = document.opretbruger;
      if ( form.email.value.length < 6 ) {
      alert ("E-mailadressen er ugyldig.");
        return false;
      form.email.focus();
    }
    wemail = form.email.value.split ("@")
      if (! (wemail[0] && wemail[1]) ){
      alert ("E-mailadressen er ugyldig.");
        return false;
      form.email.focus();
    }
    wwemail = wemail[1].split(".")
      if (! (wwemail[0] && wwemail[1]) ){
      alert ("E-mailadressen er ugyldig.");
        return false;
      form.email.focus();
    }
    if ( wwemail[1].length < 2 ) {
    alert ("E-mailadressen er ugyldig.");
      return false;
      form.email.focus();
    }
                        {
    form = document.opretbruger;
      if ( form.email.value.length > 70 ) {
      alert ("E-mailadressen er ugyldig.");
        return false;
      form.email.focus();
    }
                        {
    form = document.opretbruger;
      if (!(form.email.value == form.email2.value)) {
      alert ("E-mailadresserne er ikke ens.");
        return false;
      form.email.focus();
    }
   
            form = document.opretbruger;
      if ( form.pass.value.length > 20 ) {
      alert ("Passwordet må ikke være mere end 20 tegn.");
        return false;
      form.pass.focus();
    }
        form = document.opretbruger;
      if ( form.pass.value.length < 3 ) {
      alert ("Passwordet skal være mere end 3 tegn.");
        return false;
      form.pass.focus();
    }
                        {
    form = document.opretbruger;
      if (!(form.pass.value == form.pass2.value)) {
        alert ("Passwords er ikke ens.");
        return false;
      form.pass.focus();
    }
        {
    form = document.opretbruger
      if (!( form.alder.value >= 15)) {
      alert ("Du skal være over 15 år.");
        return false;
      form.alder.focus();
    }
            {
    form = document.opretbruger
      if (!( form.alder.value <= 120)) {
      alert ("Alder er ugyldig.");
        return false;
      form.alder.focus();
    }
    {
    form = document.opretbruger;
      if (!( form.postnummer.value >= 1000)) {
      alert ("Postnummeret er ugyldigt.");
        return false;
      form.postnummer.focus();
    }
        {
    form = document.opretbruger;
      if (!( form.postnummer.value <= 10000)) {
      alert ("Postnummeret er ugyldigt.");
        return false;
      form.postnummer.focus();
    }
    {
    form = document.opretbruger;
      if ( form.by.value.length <= 1 ) {
      alert ("By er ugyldig.");
        return false;
      form.by.focus();
    }
        {
    form = document.opretbruger;
      if ( form.by.value.length >= 50 ) {
      alert ("Bynavn er for langt.");
        return false;
      form.by.focus();
    }
   
                            {
    form = document.opretbruger;
        if (form.vilkaar.checked == false){
      alert ("Du skal godkende Betingelser & Vilkår.");
        return false;
      form.solist_vilkaar.focus();
    }

   
    {
var radio_choice = false;

for (counter = 0; counter < opretbruger.koen.length; counter++)
{
if (opretbruger.koen[counter].checked)
radio_choice = true;
}

if (!radio_choice)
{
alert("Vælg køn.")
return false;
}


    form = document.opretbruger;
      var ext = document.opretbruger.picturefile.value;
  ext = ext.substring(ext.length-3,ext.length);
  ext = ext.toLowerCase();
  if (ext == ''){
  ext = "jpg"}
  if (ext != ('jpg'|| 'Jpg'|| 'JPG'|| 'jpeg'|| 'Jpeg'|| 'JPEG')) {
    alert('Profilbillede: Du har valgt en '+ext+'-fil. Vælg venligst en jpg-fil.');
    return false;
      form.pass.focus();
    }
   
   


   

    return true;

    }}}}}}}}}}}}}}}}
   
   
    function html2entities(){
var re=/[(<>"'&]/g
for (i=0; i<arguments.length; i++)
arguments[i].value=arguments[i].value.replace(re, function(m){return replacechar(m)})
}

function replacechar(match){
if (match=="<")
return "<"
else if (match==">")
return ">"
else if (match=="\"")
return """
else if (match=="'")
return "'"
else if (match=="&")
return "&"
}


</script>
Avatar billede erikjacobsen Ekspert
08. september 2009 - 23:00 #5
"Det har dog desværre ikke ændret på noget."  Hvad har du prøvet? Hvad sker det, eller sker der ikke?
Avatar billede maskso Nybegynder
08. september 2009 - 23:20 #6
Som scriptet står nu, så virker validreringen til alle text imput felter og textarea, men radiobutton, og image upload virker ikke. Checkbox virker også pt.

Den validerer det der virker, resten ignoreres bare (altå ingen fejlmeddelelser).

Jeg har prøvet at sætte den DTD ind , som Ole henviste til. Så har jeg prøvet at ændre den del at image upload, som du foreslog, men det virkede ikke. Jeg prøvede at pille de enkelte dele af scriptet ud, for at prøve udelukkelsesmetoden, men det mærkelige er, at når jeg pille dele ud, holder andre dele op med at fungere... Specielt har jeg haft problemer med checkboksen.

Og også mærkeligt at det som sagt fungerer uden problemer i EI.
Avatar billede olebole Juniormester
08. september 2009 - 23:45 #7
Prøv at lægge et link til siden
Avatar billede erikjacobsen Ekspert
09. september 2009 - 08:44 #8
Det er ikke muligt at hjælpe dig, når du bare slynger "men det virkede ikke." ud.

Din validering af extension er forkert. Min er rigtigere - men jeg har ikke testet den, og slet ikke i din sammenhæng. Det er dit job.
Avatar billede maskso Nybegynder
09. september 2009 - 12:03 #9
Hvis jeg sætter den validering af extension ind som du kom med, virker det stadig fint i IE, men i FF holder hele scriptet op med at fungere, det ignoreres bare. Det er det der er problemet. At den enten slet ikke virker, eller kun dele af det virker.

Her er et link til sitet:

http://digitaldata.dk/testsite

Det er under "opret bruger" (det eneste der endnu er lavet på sitet).

Scriptet tester alle felter undtagen textarea.
Image upload testes således: jpg-fil: ok og ingen fil: ok.
Avatar billede olebole Juniormester
09. september 2009 - 12:31 #10
Jamen, FF forklarer dig jo tydeligt, hvad der er galt i fejlbeskeden:

Fejl: opretbruger is not defined
Kildefil: http://digitaldata.dk/testsite/index.php?page=opretbruger
Linje: 162


- og der skriver du:


for (counter = 0; counter < opretbruger.koen.length; counter++)
{
if (opretbruger.koen[counter].checked)
radio_choice = true;
}



Det er en lodret fejl, at IE ikke også smider en fejl  ;o)
Avatar billede maskso Nybegynder
09. september 2009 - 14:45 #11
Så lykkedes det... Mange tak for jeres svar.

Ole, post et svar.
Avatar billede erikjacobsen Ekspert
09. september 2009 - 14:46 #12
Din kontrol for extension er stadig forkert, som det ses på det link du har givet.
Avatar billede maskso Nybegynder
09. september 2009 - 14:58 #13
Jeg har rettet det til det foreslag du gav.

Så det er jo faktisk en deler mht. point.

Så post et svar :-)
Avatar billede erikjacobsen Ekspert
09. september 2009 - 15:09 #14
Nej tak.

Men det er ikke rettet på siden du linker til?

Derudover kunne det jo være det skulle være lidt smartere, og ikke mindst lidt rigtigere.

1) Du laver en tolowercase - så der er ikke så mange forskellige kombinationer, der skal testes for. (...lidt smartere)

2) Når du tager de tre sidste tegn af filnavnet, kontrollerer du ikke at der er et punktum, og du vil aldrig få 'jpeg' ud af det.

Det var bare det, jeg ville sige. ;)
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