Avatar billede repox Seniormester
27. juni 2005 - 21:38 Der er 11 kommentarer og
1 løsning

Virker i FF men ikke IE

Efter at have skrevet et formvalideringscript til en side og gennemtestet det i Firefox opdager jeg efter at ville afprøve det i IE at lortet slet ikke virker....
Er der nogen der kan se, om muligt, hvorfor? Jeg er ved at blive skaldet på grund af dette!

<script language="javascript"><!--
function validate(m)
{
    ok_data = true
   
    if(m.varenr.value == '') {
        ok_data = false;
        document.getElementById('varenr').innerHTML="Varenr. må ikke være tomt."
    }else{
        document.getElementById('varenr').innerHTML=""
    }

    if(m.varenavn.value == '') {
        ok_data = false;
        document.getElementById('varenavn').innerHTML="Varenavn må ikke være tomt."
    }else{
        document.getElementById('varenavn').innerHTML=""
    }
   
    if(m.lager.value == '') {
        ok_data = false;
        document.getElementById('lager').innerHTML="Du skal indtaste antal varer du har på lager."
    }else{
        document.getElementById('lager').innerHTML=""
    }
   
    if((m.lager.value/m.lager.value) != 1 && m.lager.value != 0 ) {
        ok_data = false;
        document.getElementById('lager').innerHTML="Lagerantal skal være et tal."
    }else if((m.lager.value/m.lager.value) == 1 || m.lager.value == 0) {
        document.getElementById('lager').innerHTML=""
    }

   
    if(m.pris.value == '') {
        ok_data = false;
        document.getElementById('pris').innerHTML="Du skal indtaste en pris på varen."
    }else{
        document.getElementById('pris').innerHTML=""
    }


    return ok_data;
   
}

-->
</script>
Avatar billede softspot Forsker
28. juni 2005 - 00:35 #1
Kan du vise den kode som kalder dette script?
Avatar billede roenving Novice
28. juni 2005 - 00:43 #2
Det kan da virkeligt undre mig, at du bruger .elements[].value til at teste værdien, men bruger .getElemnetById til at sætte værdien ...

Hvorfor ikke bare:

    if(m.pris.value == '') {
        ok_data = false;
        m.pris.value="Du skal indtaste en pris på varen."
    }else{
        m.pris.value=""
    }

Iøvrigt ville jeg aldrig bruge en mellemvariabel til at bestemme om der skulle submittes, hvis jeg kunne undgå det, altså:

  if(m.pris.value == '') {
    m.pris.value = "Du skal indtaste en pris på varen."
    m.pris.focus();
    return false;
  }

-- iøvrigt er det vel noget vrøvl at sætte værdien til at være tom, hvis den i forvejen er tom ?-)
Avatar billede repox Seniormester
28. juni 2005 - 09:32 #3
softspot:

<script type="text/javascript">
function validate(m)
{
    ok_data = true
   
    if(m.varenr.value == '') {
        ok_data = false;
        document.getElementById('varenr').innerHTML="Varenr. må ikke være tomt."
    }else{
        document.getElementById('varenr').innerHTML=""
    }

    if(m.varenavn.value == '') {
        ok_data = false;
        document.getElementById('varenavn').innerHTML="Varenavn må ikke være tomt."
    }else{
        document.getElementById('varenavn').innerHTML=""
    }
   
    if(m.lager.value == '') {
        ok_data = false;
        document.getElementById('lager').innerHTML="Du skal indtaste antal varer du har på lager."
    }else{
        document.getElementById('lager').innerHTML=""
    }
   
    if((m.lager.value/m.lager.value) != 1 && m.lager.value != 0 ) {
        ok_data = false;
        document.getElementById('lager').innerHTML="Lagerantal skal være et tal."
    }else if((m.lager.value/m.lager.value) == 1 || m.lager.value == 0) {
        document.getElementById('lager').innerHTML=""
    }

   
    if(m.pris.value == '') {
        ok_data = false;
        document.getElementById('pris').innerHTML="Du skal indtaste en pris på varen."
    }else{
        document.getElementById('pris').innerHTML=""
    }


    return ok_data;
   
}

</script>

<h1>Tilføj en vare</h1>

<div>
<form onsubmit="return validate(this);" action="/shop/additem.php" method="POST">
<input type="hidden" name="additem" value="additem" />
Varenr:<br /> <input type="text" name="varenr" /><br />

<span class="red" id="varenr"></span><br />
Varenavn:<br /> <input type="text" name="varenavn" /><br />
<span class="red" id="varenavn"></span><br />
På lager:<br /> <input type="text" name="lager" value="0" /><br />
<span class="red" id="lager"></span><br />
Vare beskrivelse:<br />

<div class="beskrivelse">
<textarea name="beskrivelse" class="beskrivelse" cols="60" rows="20"></textarea>
<b>Følgende koder kan benyttes:</b><br />

<b>foo</b><br />
<i>foo</i><br />
[h]<h2>foo</h2>[/h]<br />
[code]<code>foo</code>[/code]<br />
[hr]<br />

[ul] Start på liste
<ul>
<li>[li]Listeting[/li]</li>
</ul>
[/ul] Slut på liste<br />
Link genererer sig selv!

</div>

<br />
<div style="clear: both;">
Pris:<br /> <input type="text" name="pris" /><br />
<span class="red" id="pris"></span><br />
<input type="submit" name="ok" value="Tilføj vare" />

</div>
</form>
</div>

roenvig:
Grunden til at jeg vil sætte værdien til at være tom er at hvis det skal valideres igen så fjernes fejlmeddelsen såfremt at betingelsen er sand.
Avatar billede roenving Novice
28. juni 2005 - 11:19 #4
-- du skal da bruge .value på formfelter ?-)
Avatar billede olebole Juniormester
28. juni 2005 - 11:19 #5
<ole>

Du kan ikke bruge innerHTML under XHTML, hvorfor du faktisk burde crashe alle browsere med den kode. At det ikke sker skyldes udelukkende, XHTML stort set er ubrugelig på WWW, som det ser ud i dag - og at din kode derfor parses som dårlig, fejlfyldt HTML4 ... det gør i øvrigt næsten alle XHTML-dokumenter på WWW. Prøv at læse:
    http://www.eksperten.dk/artikler/537
    http://www.eksperten.dk/artikler/538
- så vil du opdage, at XHTML er guddommelig spild af tid i dag - og at der ingen fremtidssikring er i at skrive XHTML1.0 eller 1.1  :)

Dernæst bør du undgå enslydende id- og name-attributter. IE er så tilgivende overfor kodefejl, at den i mange tilfælde ikke skelner mellem id="pris" og name="pris". Derfor går det galt i den browser  ;o)

/mvh
</bole>
Avatar billede olebole Juniormester
28. juni 2005 - 11:21 #6
roenving >> han henholdsvis aflæser formfelter med value - og prøver at skrive til andre elementer med innerHTML. Problemet er identifiers, som jeg skrev ovenfor ... men det tog da også røven på mig i første omgang  ;o)
Avatar billede olebole Juniormester
28. juni 2005 - 11:25 #7
Prøv med:

Pris:<br> <input type="text" name="inpPris"><br>
<span class="red" id="pris"></span><br>

- og samme type rettelse ved de andre elementer, så fungerer det sikkert  ;o)
Avatar billede repox Seniormester
28. juni 2005 - 12:54 #8
ole:
Dit forslag med at omdøbe felterne virkede efter hensigten.
Lægger du et svar?
Avatar billede olebole Juniormester
28. juni 2005 - 18:12 #9
Gerne, tak  :)
Avatar billede thesurfer Nybegynder
29. juni 2005 - 12:59 #10
hahaha... så lærte jeg noget nyt.. :-)
Må nok hellere passe på, med id og name..

Hmm.. kan man egentligt ikke bare nøjed med id?

Hvordan ville det se ud, hvis man skulle adressere feltet "pris", fra en popup (window.open..), med denne form:

<form id="minform"
<input type="text" id="mitfelt">
</form>

Måske sådan her: onclick="opener.window.document.getElementById('minform').getElementById('mitfelt').value ?

Eller skal man ud i noget onclick="opener.window.document.getElementById('minform').elements['mitfelt'].value ?

Eller noget helt tredje..?

/theSurfer
Avatar billede thesurfer Nybegynder
29. juni 2005 - 13:00 #11
adressere feltet "pris" = adressere feltet "mitfelt" (lavede det om i sidste øjeblik..)

/theSurfer
Avatar billede roenving Novice
29. juni 2005 - 13:06 #12
Du kan da bare tage fat i det via

onclick="opener.document.getElementById('mitfelt').value;"

opener.window er iøvrigt nærmest en slags vrøvl, selvom et window-object har en property, som hedder window og henviser til sig selv !-)
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