Radio box prüfen, Pflichtfeld
Gabi
- javascript
0 BT0 Gabi0 radioboxer0 Gabi0 radioboxer0 GABI
0 Gabi
Guten Morgen zusammen.
Ich komme mit meinem Problem "Radiobox" als Pflichtfeld prüfen nicht weiter.
Vieles habe ich hier schon gelesen und immer bin ich der Sache noch nicht auf den Grund gekommen.
Mein Datei Inhalt der formular.html Datei
.
.
.
function chkFormular()
{
if(window.document.form.Roentgenklasse[0].checked == false;)
{
window.document.form.Roentgenklasse.focus();
validity = false;
alert("Bitte geben Sie die Größe die Röntgenklassse an!");
return validity;
}
return validity;
}
.
.
.
if(window.document.form.from_standort.value == "")
{
window.document.form.from_standort.focus();
validity = false;
alert("Bitte geben Sie den Standort an!");
return validity;
}
.
</head>
<body>
.
.
.
.
.
<form name="form" action="/eintrag/formular_senden.php" method="post" onsubmit="return chkFormular()" >
.
.
Standort: *<br>
<input name="from_standort" type="text" size="40" value="">
.
.
Röntgenklasse: *<br>
<input name="Roentgenklasse" type="radio" value="1" /> 1
<input name="Roentgenklasse" type="radio" value="2" /> 2
<input name="Roentgenklasse" type="radio" value="3" /> 3
<br>
.
.
.
<input type="submit" value="Formular absenden"
</form>
Der Ausdruck "if(window.document.form.Roentgenklasse[0].checked == false;)" bringt mich nicht weiter.
Ich habe es mit dem Zähler 1 u. auch 2 probiert, mit nur der leeren Klammer[], auch ohne die Klammer, doch in keinem meiner Versuche wurde dieser Ausdruck berücksichtigt.
Das Formular immer abgesendet ohne das eine der gewünschten Radio boxen gedrückt wurde.
Wo liegt mein problem ??
Ich sehe es nicht.
Mir ist auch noch nicht klar wie das überhaupt richtig abgefragt wird.
Denn wenn man mit Roentgenklasse[0],Roentgenklasse[1],Roentgenklasse[2] abfragt sind immer zwei davon nicht gedrückt, einer soll unbedingt gedrückt sein. wie fragt man also diese Gruppe Roentgenklasse sinnvoll ab?
Ein weiters Problem ist noch die Abfrage des Feldes "from_standort" auf nur Leerzeichen?
Womit fragt man denn in js ab, ob "from_standort" nicht aus " " (Blanks/Leerzeichen) besteht und somit inakzeptabel ist?
Danke herzlichst für eure Hilfe
Gruß Gabi
Hi!
Also um die Radiobutton zu checken wäre das hier mein Denkansatz:
if (document.form.Roentgenklasse[0].checked == true) {
} else if (document.form.Roentgenklasse[1].checked == true) {
} else if (document.form.Roentgenklasse[2].checked == true) {
} else {
alert("Bitte geben Sie die Größe die Röntgenklassse an!");
}
hoffe das hilft dir ein bißchen weiter
Hi!
Also um die Radiobutton zu checken wäre das hier mein Denkansatz:
if (document.form.Roentgenklasse[0].checked == true) {
} else if (document.form.Roentgenklasse[1].checked == true) {
} else if (document.form.Roentgenklasse[2].checked == true) {
} else {
alert("Bitte geben Sie die Größe die Röntgenklassse an!");
}hoffe das hilft dir ein bißchen weiter
ups,
das hatte ich noch nicht gelesen...
probiere es gleich mal aus.
Danke
Hi!
Also um die Radiobutton zu checken wäre das hier mein Denkansatz:
if (document.form.Roentgenklasse[0].checked == true) {
} else if (document.form.Roentgenklasse[1].checked == true) {
} else if (document.form.Roentgenklasse[2].checked == true) {
} else {
alert("Bitte geben Sie die Größe die Röntgenklassse an!");
}hoffe das hilft dir ein bißchen weiter
Hallo,
dein Vorschlag ist interessant.
Aber geht das nicht auch in einer Schleife ??
Ich fand dazu dasfolgende Code schnipsel:
function checkForm() {
var arrBoxen = document.getElementsByName("checkboxen[]");
for (var i = 0; i < arrBoxen.length; i++) {
if(arrBoxen[i].checked == true) {
alert(arrBoxen[i].id)
}
}
}
habe dann meines so bageändert:
function chkFormular()
{
validity = true; // assume valid
window.document.form.from_standort.value=basicTrim(window.document.form.from_standort.value);
if(window.document.form.from_standort.value == "")
{
window.document.form.from_standort.focus();
validity = false;
alert("Bitte geben Sie den Standort an!");
return validity;
}
var arrBoxen = document.getElementsByName("Roentgenklasse[]");
for (var i = 0; i < arrBoxen.length; i++)
{
if(arrBoxen[i].checked == true)
{
validity = false;
alert("Bitte geben Sie die Röntgenklassse an! "+arrBoxen.length);
return validity;
}
}
Im Html-Teil habe ich so abgeändert:
<input name="Roentgenklasse[]" type="radio" value="1" /> 1
<input name="Roentgenklasse[]" type="radio" value="2" /> 2
<input name="Roentgenklasse[]" type="radio" value="3" /> 3
Es funktioniert aber nicht!!!
Hat jemand eien Idee ??
Danke
Gabi
Zum Trimmen von Leerzeichen habe ich inzwischen doch noch etwas sehr interessantes hier im Forum gefunden:
http://forum.de.selfhtml.org/archiv/2005/4/t106433/#m659975
Zu meinem Radio Abfrage Problem habe ich inzwischen einen grundsätzlichen Fehler eleminieren können
window.document.form.Roentgenklasse.focus();
Diese Zeile muss raus, die ist auf Radio offensichtlich nicht anwendbar und führt offenbar zum sofortigen Abbruch der Funktion.
Jetzt nach löschen o.a. Zeile funktioniert wenigstens schon eine Abfrage der Art
if(window.document.form.Roentgenklasse[0].checked == false)
{
validity = false;
alert("Bitte geben Sie die Röntgenklassse an!");
return validity;
}
Soweit habe ich mir also schon helfen können.
Es bleibt noch ungelöst wie man alle 3Felder von window.document.form.Roentgenklasse[] gescheit abfragen kann, ob mindestens einer davon gedrückt ist.
Hat da jemand eine Idee ??
Vieln Dank
Gabi
Hat da jemand eine Idee ??
var roentgen=document.form.Roentgenklasse;
var validity=false;
for (var i=0; i<roentgen.length; i++) {
validity=(validity || roentgen[i].checked);
}
if (!validity) alert("Bitte geben Sie die Röntgenklassse an!");
return validity;
hier könntest du theoretisch auch mehr oder weniger (mindestens aber 2) Roentgenklassefelder einfügen, das Script prüft selbst wieviele es gibt.
Danke,
kannst du mir diesen Ausdruck erklären ??
validity=(validity || roentgen[i].checked);
Den versteh ich noch nicht!!
Gabi
Hat da jemand eine Idee ??
var roentgen=document.form.Roentgenklasse;
var validity=false;
for (var i=0; i<roentgen.length; i++) {
validity=(validity || roentgen[i].checked);
}
if (!validity) alert("Bitte geben Sie die Röntgenklassse an!");
return validity;
>
> hier könntest du theoretisch auch mehr oder weniger (mindestens aber 2) Roentgenklassefelder einfügen, das Script prüft selbst wieviele es gibt.
kannst du mir diesen Ausdruck erklären ??
validity=(validity || roentgen[i].checked);
roentgen[i].checked liefert true oder false
|| ist ein oder
validity kann false oder true sein
also gibts diese 4 Möglichkeiten für (validity || roentgen[i].checked)
(false || false) ergibt false
(false || true) ergibt true
(true || false) ergibt true
(true || true) ergibt true
spätestens also wenn einmal eine Checkbox ein Häkchen hatte wird validity auf true gesetzt und das bleibt dann auch so.
Vieln Dank für die erklärung,
Aber ist denn dann deine dritte Zeile überhaupt richtig ??
müsste das nicht auch als Ergebnis (true || false) ergibt false haben ??
Gabi
Aber ist denn dann deine dritte Zeile überhaupt richtig ??
müsste das nicht auch als Ergebnis (true || false) ergibt false haben ??
nein, || ergibt true solange mindestens einer der Ausdrücke true ist
Hallo,
habe inzwischen deinen Vorschlag getestet.
Zuerst ging es nicht.
doch dann habe ich Probeweise die "[]" im Input-Tag ebenfalls entfernt, da funktionierte es dann doch.
Inzwischen habe ich deinen Vorschlag etwas zu einer Funktion modifiziert, denn ich habe nicht nur Röntegenklasse, sondern auch noch Groessenklasse und einige andere Radio abfragen.
Es sieht jetzt so bei mir aus
function radiocheck(pruefen,txt)
{
var validity=false;
for (var i=0; i<pruefen.length; i++) {
validity=(validity || pruefen[i].checked);
}
if (!validity)
{
alert(txt);
}
return validity;
}
function chkFormular()
{
validity = true; // assume valid
window.document.form.from_standort.value=basicTrim(window.document.form.from_standort.value);
if(window.document.form.from_standort.value == "")
{
window.document.form.from_standort.focus();
validity = false;
alert("Bitte geben Sie den Pferdestandort an!");
return validity;
}
validity = radiocheck(document.form.Roentgenklasse,"Bitte geben Sie die Röntgenklasse an!");
if (!validity)
{
return validity;
}
validity = radiocheck(document.form.Groessenklasse,"Bitte geben Sie die Größenklasse an!");
if (!validity)
{
return validity;
}
.
.
.
<form name="form" action="/****.php" method="post" onsubmit="return chkFormular()" >
.
Röntgenklasse: *<br>
<input name="Roentgenklasse" type="radio" value="1" /> 1
<input name="Roentgenklasse" type="radio" value="2" /> 2
<input name="Roentgenklasse" type="radio" value="3" /> 3
<br><br>
Größenklasse: *<br>
<input type="radio" value="S" name="Groessenklasse" > S
<input type="radio" value= "M" name="Groessenklasse" > M
<input type="radio" value= "L" name="Groessenklasse" > L
<input type="radio" value= "XL" name="Groessenklasse" > XL
.
.
.
</form>
So kann ich nun jede Gruppe von Radiobuttons auf Pflichteingabe prüfen.
Gibt es dort noch Optimierungs möglichkeiten??
Z.B. das java script selbts die Namen der Gruppe erkennen / lesen zu lassen ??
Vielen Dank
GABI
function chkFormular()
{validity = true; // assume valid
besser
var validity = true;
dann weiß der Browser, dass damit definitiv keine anderen Variablen gleichen Namens in anderen Scriptteilen gemeint sind.
Gibt es dort noch Optimierungs möglichkeiten??
höchstens stilistischer Natur
Z.B. das java script selbts die Namen der Gruppe erkennen / lesen zu lassen ??
die Erkennungsroutine dürfte aufwändiger sein, als deine jetzige Lösung.