Avatar billede fojensen Nybegynder
02. maj 2012 - 08:06 Der er 10 kommentarer

Confirm-funktion til checkbox i formular

Er der ikke en ekspert der kan hjælpe mig med at få denne javascript confirm-funktion til at køre?

opgaven går på, at jeg har en checkbox i en formular, der gerne skal være chrcked når der trykkes på send knappen. Hvis den ikke er checked, vil jeg gerne gøre brugeren opmærksom på at det ikke er så godt.

min formular bliver genereret vha php:
echo "<form name=\"ret\" action=\"$self\" method=\"post\" id=\"retform\">\n";
echo "<input type=\"checkbox\" name=\"frigivet\" value=\"1\" checked / id=\"frigivetcheckbox\"> Frigivet og synlig for alle. \n";
echo "<input type=submit value=\"Send rettelse\" onclick=\"return okay() class=\"FileBox1\" />\n";
echo "</form>\n";

og det giver dette output til siden (klip fra kildekoden):
<form name="ret" action="" method="post" id="retform">
<input type="checkbox" name="frigivet" /> Frigiv turen
<input type=submit value="Send rettelse" onclick="return okay() class="FileBox1" />
</form>


<script language="javascript">
<!--
function okay(){
if(document.frigivetcheckbox.checked = false){
  if(confirm("OBS !\n\n
  Du ikke har ikke sat flueben ved frigiv turen.\n
  Turen bliver først synlig for brugerne, når du har frigivet turen.\n\n
  Er du sikker på du vil rette beskrivelsen, uden at frigive turen samtidigt ?\n\n")){
      document.retform.submit();
  }else{
  return false;
  }
}
}
// -->
</script>

mvh Folmer
Avatar billede olsensweb.dk Ekspert
02. maj 2012 - 08:28 #1
uden at kigge din code nærmere igennem er der noget der skriger i øjene
language attributten i script er forældet brug type
1 lighedstegn => tildeling
2 lighedstegn sammnligning på værdi
3 lighedstegn sammenligning på værdi og type

<script type="text/javascript">
<!--
function okay(){
    // if(document.frigivetcheckbox.checked = false){
    if(document.frigivetcheckbox.checked === false){ // sammenligning 2 eller 3 ligheds tegn
        if(confirm("OBS !\n\n
            Du ikke har ikke sat flueben ved frigiv turen.\n
            Turen bliver først synlig for brugerne, når du har frigivet turen.\n\n
            Er du sikker på du vil rette beskrivelsen, uden at frigive turen samtidigt ?\n\n")){
            document.retform.submit();
        }
        else{
            return false;
        }
    }
}
// -->
</script>
Avatar billede olsensweb.dk Ekspert
02. maj 2012 - 08:30 #2
burde dette
document.retform.submit();
ikke bare være
return true;

??
Avatar billede fojensen Nybegynder
02. maj 2012 - 12:33 #3
Jeg skrev forresten slet ikke hvad jeg oplever der er galt.

Jeg har en fornemmelse af at funktionen slet ikke afvikles når der trykkes på submit.

Er der noget galt med mit funktions-kald ?
Hvordan kan jeg evt teste at det er her den fejler ?

mvh Folmer
Avatar billede mireigi Novice
02. maj 2012 - 14:26 #4
Fremhævet = Tilføj
Understeget = Fjern

echo "<form name=\"ret\" action=\"$self\" method=\"post\" id=\"retform\" onsubmit=\"return okay();\">\n";


echo "<input type=submit value=\"Send rettelse\" onclick=\"return okay() class=\"FileBox1\" />\n";


Og så dit validerings script:
<script type="text/javascript">
<!--
function okay(){
    // if(document.frigivetcheckbox.checked = false){
    if(document.frigivetcheckbox.checked === false){ // sammenligning 2 eller 3 ligheds tegn
        return confirm("OBS !\n\n
            Du ikke har ikke sat flueben ved frigiv turen.\n
            Turen bliver først synlig for brugerne, når du har frigivet turen.\n\n
            Er du sikker på du vil rette beskrivelsen, uden at frigive turen samtidigt ?\n\n")
    }
    return false;
}
// -->
</script>


Derudover har du mindst ét sted i din kode, hvor du ikke får afsluttet dine HTML-attributter korrekt. Der er også steder, hvor der ikke er anførselstegn ("") omkring værdierne i en attribut.
Avatar billede fojensen Nybegynder
07. maj 2012 - 15:43 #5
Der er stadig problemer...
Jeg kan ikke se tegn på at funktionen bliver kaldt korrekt.
her har jeg klippet fra kildekoden:
-----Klip fra formular-----
<input type=submit value="Send rettelse" onsubmit="return okay();" class="FileBox1" />
</form>
-----/Klip fra formular-----

Jeg har forsøgt at skrive en linie ind i funktionen der vil teste om funktionen er kaldt, men jeg kan ikke få den til at svare, så måske bliver den slet ikke kaldt korrekt.

-----Klip fra funktionen i kildekoden-----
function okay(){
  alert("Bingo - funktionen er kaldt")
  if(document.frigivetcheckbox.checked === false){
    if(confirm("OBS !\n\n
    Turen bliver først synlig for brugerne, når du har frigivet turen.\n\n
    Du kan frigive turen, ved at sætte flueben ved "frigiv turen".\n
    Vil du rette uden at frigive turen samtidigt ?\n\n")){
        document.froms.retform.submit();
    }else{
    return false;
    }
  }
}
// -->
</script>
-----/Klip fra funktionen i kildekoden-----

Er der en ekspert der kan spotte fejlen ?
Avatar billede olsensweb.dk Ekspert
07. maj 2012 - 16:12 #6
lig siden online og kom med et link.
Avatar billede fojensen Nybegynder
07. maj 2012 - 16:23 #7
Det kan jeg desværre ikke...
Siden er en del af noget der kræver bruger-login med specielle rettigheder, og disse rettigheder ville du aldrig kunne opnå. ;)
Men klip fra kildekoden må være ligeså brugbart - ikk.
Avatar billede mireigi Novice
07. maj 2012 - 16:52 #8
Hvis du nu lige nærlæser, hvad jeg skrev i mit indlæg, finder du nok problemet :)
Avatar billede fojensen Nybegynder
07. maj 2012 - 21:16 #9
Ja. det må jeg så sætte mig og bruge lidt mere tid på...

lige et konkret spørgsmål...
er skrivemåden rigtig, når jeg skriver inde i min funktion:
  alert("Bingo - funktionen er kaldt")
mangler der evt et afslutningstegn eller hvordan gør man det i Javascript ?

mvh
Avatar billede mireigi Novice
08. maj 2012 - 01:16 #10
Afslutningstegnet i JavaScript er semi-kolon ( ; ).

Det er ikke alle steder at det er påkrævet, men ved altid at bruge det, sikrer du dig mod uventede fejl.
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