noch mehr javascript radio button stuff
vetinari
- javascript
hallo,
ich möchte abfragen, ob von 3 radio buttons einer gewählt wurde (zahlungsweise) und wenn "bankeinzug" geklickt wurde, sollen die felder für die kontodaten überprüft werden.
es klappt alles bis auf den check ob mindestens einer der radio buttons gewählt wurde. hier mein javascript code:
<script>
function chkFormular() {
if (document.formular.Zahlungsweise[0].checked == false && document.formular.Zahlungsweise[1].checked == false && document.formular.Zahlungsweise[2].checked == false)
{
alert("Bitte geben sie eine Zahlungsweise ein!");
document.formular.Zahlungsweise.focus();
return false;
}
if (document.formular.Zahlungsweise[2].checked == true)
{
if(document.formular.Kontoinhaber.value == '')
{
alert("Bitte geben sie den Kontoinhaber ein!");
document.formular.Kontoinhaber.focus();
return false;
}
if(document.formular.Konto.value == '')
{
alert("Bitte geben sie ihren Konto-Nummer ein!");
document.formular.Konto.focus();
return false;
}
if(document.formular.BLZ.value == '')
{
alert("Bitte geben sie ihre Bankleitzahl ein!");
document.formular.BLZ.focus();
return false;
}
if(document.formular.Bank.value == '')
{
alert("Bitte geben sie den Banknamen ein!");
document.formular.Bank.focus();
return false;
}
}
}
</script>
die radio buttons haben das format:
<input type="radio" id="Zahlungsweise" name="Zahlungsweise" value="Bankeinzug">
wenn ich keinen radio button wähle kommt die alert meldung. wenn ich diese mit ok bestätige wird das formular jedoch sofort abgesendet!
anscheinend funktioniert der code:
alert("Bitte geben sie eine Zahlungsweise ein!");
document.formular.Zahlungsweise.focus();
return false;
nicht für radio buttons, oder wo liegt mein fehler?
hier mal der link:
http://www.alabaster-world.de/test_bestellung.php
kann jemand helfen?
gruss, martin
Hi,
alert("Bitte geben sie eine Zahlungsweise ein!");
document.formular.Zahlungsweise.focus();
Hier ist der Fehler
return false;
nicht für radio buttons, oder wo liegt mein fehler?
hier mal der link:
http://www.alabaster-world.de/test_bestellung.phpkann jemand helfen?
Die Fehlerkonsole vom Firefox gibt folgende Fehlermeldung aus:
Fehler: document.formular.Zahlungsweise.focus is not a function
Quelldatei: http://www.alabaster-world.de/test_bestellung.php
Zeile: 7
Ich würde das so interpretieren, dass du den Focus auf die Radio-Buttons setzten willst, was aber nicht geht, weil es ja mehrere sind, die nicht alle gleichzeitig im Focus liegen können.
Außerdem gibt es noch eine Warnung, dass deine Funktion nicht immer einen Returnwert zurückgibt.
Falls du das noch nicht bedacht hast sei noch gesagt, dass du dich auf einen Check mit JS nicht verlassen kannst, da es auch User gibt, die JS abgeschaltet haben. Eine zusätzliche serverseitige Überprüfung der Daten unverzichtbar.
mfG,
steckl
hallo,
Falls du das noch nicht bedacht hast sei noch gesagt, dass du dich auf einen Check mit JS nicht verlassen kannst, da es auch User gibt, die JS abgeschaltet haben. Eine zusätzliche serverseitige Überprüfung der Daten unverzichtbar.
ja, das sehe ich ein, aber wie funktioniert eine überprüfung mit php bevor das formular gesendet wird?
gruss, martin
Hi,
wie funktioniert eine überprüfung mit php bevor das formular gesendet wird?
Vor dem Abschicken geht das garnicht. Wenn du das haben willst musst du (für mehr Komfort) zusätzlich Javascript verwenden.
Hab leider jetzt keine Zeit mehr, aber lies dir vielleicht mal den Wikipedia-Artikel zum Thema Affenformular durch.
mfG,
steckl
hallo,
Hab leider jetzt keine Zeit mehr, aber lies dir vielleicht mal den Wikipedia-Artikel zum Thema Affenformular durch.
ok, danke. dann weiss ich erst mal bescheid.
gruss, martin
Hallo,
ich habe festgestellt, je mehr Buchstaben man in einem Script verwendet, je mehr Fehler kann man machen.
if( element.checked ) alert("ok");
if( ! element.checked ) alert("Error");
deine Anführungszeichen sehen auch kryptisch aus:
alert("Bitte geben sie eine Zahlungsweise ein!");
spätestens jetzt wäre es an der Zeit, einen Browser zu verwenden, der dir vernünftige Fehlermeldungen ausgibt. Das kann kein IExplorer sein.
function chkFormular() {
var f=document.formular;
if ( ! ( f.Zahlungsweise[0].checked
|| f.Zahlungsweise[1].checked
|| f.Zahlungsweise[2].checked ))
{
alert("Bitte geben sie eine Zahlungsweise ein!");
f.Zahlungsweise[0].focus();
return false;
}
function fehler(input,message) {
if (input.value=="") {
input.style.backgroundColor="red";
input.onfocus=function() {this.style.backgroundColor=""};
alert(message);
input.focus();
return true;
}
}
if (f.Zahlungsweise[2].checked )
{
if (fehler( f.Kontoinhaber,"Bitte geben sie den Kontoinhaber ein!")) return false;
if (fehler( f.Konto,"Bitte geben sie ihren Konto-Nummer ein!")) return false;
if (fehler( f.BLZ,"Bitte geben sie ihre Bankleitzahl ein!")) return false;
if (fehler( f.Bank,"Bitte geben sie den Banknamen ein!")) return false;
}
}
Gruß plan_B