checkbox abgefragt, trotzdem Weiterleitung
Thorsten
- javascript
0 JürgenB
0 Matti Mäkitalo0 Der Martin
Hallo,
ich habe folgendes Problem:
Ich möchte bei einem formular am ende über eine checkbox die Nutzungsbedingungen bestätigen lassen. Leider leitet der button "send" hier immer weiter zur Bestätigungsseite und sendet, obwohl der FormularAlert anspringt und kurz darauf hinweist, dass man akzeptieren muss.
Wenn ich die Seite aus meinem CMS aufrufe, klappt das wunderbar, füge ich den Link zur Seite in die Addresszeile ein, geht es wieder nicht.
Kann mir jemand helfen?
hier die checkbox:
<div class="FormularElement">
<input class="checkbox" id="checkbox" tabindex="15" type="checkbox" value="ja" name="Nutzungsbedingungen"> Ich habe die <a title="Nutzungsbedingungen der Privatzimmerbörse zum Papstbesuch" href="../../show/1248333/Nutzungsbedingungen.pdf" target="_blank">Nutzungsbedingungen</a> gelesen und stimme diesen zu<br>
<br>
</div>
und die Abfrage:
case "Nutzungsbedingungen":
if(document.forms[check[0]].Nutzungsbedingungen && document.forms[check[0]].Nutzungsbedingungen.checked == false)
{ if ($('FormularAlertbox')) {
$('FormularAlertbox').innerHTML="<p id='FormularAlert'>Bitte Nutzungsbedingungen akzeptieren</p>";
$('Nutzungsbedingungen').setStyle({border: 'red 1px solid', backgroundColor: '#eee'})
}
else
alert("Bitte Nutzungsbedingungen akzeptieren");
document.forms[check[0]].Nutzungsbedingungen.focus();
return false
}
Hallo Thorsten,
ich hoffe, du prüfst das Lesen der Nutzungsbedingungen auch serverseitig. Zwar haben fast alle Surfer Javascript eingeschaltet, wer sich aber rausreden will, behauptet einfach, von den Nutzungsbedingungen nichts gewusst zu haben.
Zu deinem Problem: wer ruft den JS-Schnippsel wann und wo auf? Am besten postest du mal einen Link zur Testseite.
Gruß, Jürgen
Hi,
case "Nutzungsbedingungen":
if(document.forms[check[0]].Nutzungsbedingungen && document.forms[check[0]].Nutzungsbedingungen.checked == false)
{ if ($('FormularAlertbox')) {
$('FormularAlertbox').innerHTML="<p id='FormularAlert'>Bitte Nutzungsbedingungen akzeptieren</p>";
$('Nutzungsbedingungen').setStyle({border: 'red 1px solid', backgroundColor: '#eee'})
}
else
alert("Bitte Nutzungsbedingungen akzeptieren");
document.forms[check[0]].Nutzungsbedingungen.focus();
return false
}
Kann es sein, dass du hier mit den Klammern durcheinanderkommst? Die letzte schließende Klammer gehört zu "if(document.forms[check[0]].", der else-Zweig besteht nur aus dem alert(), da du dort keine Klammern angibst.
Deine Einrückung ist sehr (!) schwer zu lesen, ich empfehle dir, dir einen besseren Stil zuzulegen.
Bis die Tage,
Matti
Hi,
case "Nutzungsbedingungen":
if(document.forms[check[0]].Nutzungsbedingungen && document.forms[check[0]].Nutzungsbedingungen.checked == false)
wo kommt check[0] her und welchen Wert hat es hier? Den Namen des umgebenden Formulars, das du uns leider nicht zeigst? Das wäre von der Namensgebung her ziemlich unglücklich, aber alles andere wäre falsch.
Außerdem fragt man einen boolschen Ausdruck eleganterweise direkt ab, anstatt ihn erst mit einer der Konstanten true oder false zu vergleichen:
if (b)
// Anweisung für den Fall, dass b wahr ist
Alternativ:
if (!b)
// Anweisung für den Fall, dass b falsch ist
Außerdem schließe ich mich Matti an, was den Einrückungs- und Klammerstil angeht.
So long,
Martin