EINEN Radiobutton abfragen
girasol
- javascript
0 Benjamin Buxbaum0 plan_B0 Steel
Hallo,
Ich habe da ein Problem mit einer Radionutten abfrage und habe daher das Forum durchsucht. Dabei bin ich auf einen Eintrag von Jenni, am 21. 05. 2003 gestossen.
Zitat Jenni:
"ich habe da mal ein Problemchen. Ich programmiere gerade eine sehr dynamische Datenbankverwaltung mit ASP und JavaScript. Dabei generiere ich auch automatisch (je nach Anzahl der Treffer) eine Liste mit Radio Buttons. Dabei kann es vorkommen, dass nur ein Radio Button zur Auswahl steht. Resultat: Es knallt mir alles um meine Ohren. Bei zwei oder mehr Buttons ist alles kein Thema."
Ich kämpfe zur Zeit mit dem selben Problem.
Die Lösung war dann das ganze mit einem Hiddenfeld zu machen. Nur dies ist mir nicht ganz klar! Wie mache ich dies mit einem Hiddenfeld? Kann mir da jemand weiter helfen, oder kann mir vielleicht sogar Jenni die damalige Lösung erklären?
Vielen Dank schon mal
Girasol
Hi girasol!
Resultat: Es knallt mir alles um meine Ohren.
Was heißt das denn genau?
Ich kämpfe zur Zeit mit dem selben Problem.
Die Lösung war dann das ganze mit einem Hiddenfeld zu machen. Nur dies ist mir nicht ganz klar! Wie mache ich dies mit einem Hiddenfeld?
Das ist mir auch nicht ganz klar. Die Problembeschreibung ist ziemlich ungenau. Und bist Du Dir sicher, dass Radiobuttons die richtige Lösung sind, wenn es auch vorkommen kann, dass es nur eine Auswahlmöglichkeit gibt? Kann man diesen Fall (nur eine Möglichkeit) nicht schon serverseitig abfangen und statt Radiobutton an der Stelle eine Checkbox einsetzen?
mfG
Benjamin
Das ist mir auch nicht ganz klar. Die Problembeschreibung ist ziemlich ungenau. Und bist Du Dir sicher, dass Radiobuttons die richtige Lösung sind, wenn es auch vorkommen kann, dass es nur eine Auswahlmöglichkeit gibt? Kann man diesen Fall (nur eine Möglichkeit) nicht schon serverseitig abfangen und statt Radiobutton an der Stelle eine Checkbox einsetzen?
Nun gut bei mir ist das "Es knallt mir alles um meine Ohren" bloss eine Java-Fehlermeldung, bzw. Fehlverhalten. D.h. Obwohl ein Radiobutton angewählt ist, behauptet die Java Prüfung es sei keiner angewählt. (Sorry, da bin ich zu wenig auf das Fehlverhalten bei mir eingegangen)
Bei dem Programm handelt es sich um ein Tool zum Verwalten von Schulungen. Dabei werden mir 2 Listen angezeigt. Eine mit Mitarbeitern und eine andere mit Kursen. Am Ende der Jeweiligen Zeile befindet sich dann der Radiobutton welcher als value die ID aus der AccessDatenbank trägt. Durch auswählen eines Mitarbeiters und eines Kurses kann über einen Submit Button ein Mitarbeiter für einen Kurs angemeldet werden.
Da es sich aber um rund 300 Mitarbeiter handelt habe ich eine Suchfunktion eingebaut, um beispielsweise nur alle Müllers anzeigen zu lassen und dort dann den entsprechenden auszuwählen. Was eigentlich auch funktioniert.
Ergibt nun die Suche aber nur ein Ergebnis, also nur ein Müller, so erhalte ich die Meldung, dass ich keinen Mitarbeiter angewählt habe, auch wenn dem so ist.
Die Prüfung dazu sieht wie folg aus:
<script language="JavaScript" type="text/javascript">
function fctAbschicken() {
intCountUser = 0
for(i = 0; i < document.anmeldung.userbutton.length; i++) {
if(document.anmeldung.userbutton[i].checked) {
intCountUser = 1
}
}
if ( intCountUser == 0) {
alert('Bitte wählen Sie einen Mitarbeiter aus.');
return;
}
intCountKurs = 0
for(i = 0; i < document.anmeldung.kursbutton.length; i++) {
if(document.anmeldung.kursbutton[i].checked) {
intCountKurs = 1
}
}
if(intCountKurs == 0) {
alert('Bitte wählen Sie einen Kurs aus.');
return;
}
if ( intCountUser == 1 && intCountKurs == 1 ) {
document.anmeldung.submit();
}
}
</script>
Hoffe es ist nun etwas klarer...
Gruss
Hi,
bin nicht so der Javascript Fraggle,
aber versuch doch einfach mal:
i = 1; i <= document.anmeldung.userbutton.length; i++)
Grüsse, Frank
Hi girasol!
Ergibt nun die Suche aber nur ein Ergebnis, also nur ein Müller, so erhalte ich die Meldung, dass ich keinen Mitarbeiter angewählt habe, auch wenn dem so ist.
Das hängt vermutlich mit dem zusammen, was plan_B schon gesagt hat:
if(document.anmeldung.userbutton[i].checked) {
intCountUser = 1
}
"userbutton" ist also ein Array, das die Radiobuttons enthält? Wie wird das angelegt? Was passiert, wenn nur ein Button vorhanden ist?
mfG
Benjamin
Die Prüfung dazu sieht wie folg aus:
Es ist nicht besonders elegant.
HTML:
<form action=".." onsubmit="return fctAbschicken(this")>
<script type="text/javascript">
function fctAbschicken(f) {
var check = false;
if(!f.userbutton.length ) check = f.userbutton.checked;
else {
for(var i = 0; i < f.userbutton.length; i++)
if(f.userbutton[i].checked) check = true;
}
if ( !check ) {
alert('Bitte wählen Sie einen Mitarbeiter aus.');
}
.... die anderen Tests ...
return check;
}
</script>
globale Variabeln sind schlecht, benutze var!
In JS existiert ein boolscher Datentyp
Struppi.
Die Prüfung dazu sieht wie folg aus:
Es ist nicht besonders elegant.
HTML:
<form action=".." onsubmit="return fctAbschicken(this")>
<script type="text/javascript">
function fctAbschicken(f) {
var check = false;
if(!f.userbutton.length ) check = f.userbutton.checked;
else {
for(var i = 0; i < f.userbutton.length; i++)
if(f.userbutton[i].checked) check = true;
}
if ( !check ) {
alert('Bitte wählen Sie einen Mitarbeiter aus.');
}.... die anderen Tests ...
return check;
}
</script>
>
> globale Variabeln sind schlecht, benutze var!
> In JS existiert ein boolscher Datentyp
>
> Struppi.
erst mal Danke für eure Hilfe!
Habe dies ausprobiert
Aber es führt mich stets zum fehler:
'userbutton.length' ist Null oder kein Objekt!
Aber es führt mich stets zum fehler:
'userbutton.length' ist Null oder kein Objekt!
In meinem Code steht nicht userbutton.length und Hast du den Aufruf der Funktion entsprechend geändert?
Struppi.
Aber es führt mich stets zum fehler:
'userbutton.length' ist Null oder kein Objekt!In meinem Code steht nicht userbutton.length und Hast du den Aufruf der Funktion entsprechend geändert?
Struppi.
Doch, das userbutton.length gab es da bei:
if(!f.userbutton.length ) check = f.userbutton.checked;
Bin das ganze nochmals ganau durchgegangen, der Fehler lag aber wo anders. Und zwar bei einem Vertippsler, welchen ich auf Grund von Copy paste übersah.
Bei:
form action=".." onsubmit="return fctAbschicken(this")>
ist das " und ) vertauscht.
Habe dies angepasst und nun funktioniert es auch!!! Hurra!!!
Besten Dank
Bin das ganze nochmals ganau durchgegangen, der Fehler lag aber wo anders. Und zwar bei einem Vertippsler, welchen ich auf Grund von Copy paste übersah.
Bei:form action=".." onsubmit="return fctAbschicken(this")>
ist das " und ) vertauscht.
stimmmt, dann wundert mich aber die Fehlermeldung.
Habe dies angepasst und nun funktioniert es auch!!! Hurra!!!
Besten Dank
Bitte, kein Problem.
Struppi.
Bin das ganze nochmals ganau durchgegangen, der Fehler lag aber wo anders. Und zwar bei einem Vertippsler, welchen ich auf Grund von Copy paste übersah.
Bei:form action=".." onsubmit="return fctAbschicken(this")>
ist das " und ) vertauscht.stimmmt, dann wundert mich aber die Fehlermeldung.
Habe dies angepasst und nun funktioniert es auch!!! Hurra!!!
Besten DankBitte, kein Problem.
Struppi.
Eine Frag ist nun aber doch noch aufgetaucht.
Wenn ich nund für die 2.Serie von Radiobuttens --> kursbutton den selben Check machen möchte, kann ich dann das selbe angepasste Skript:
if(!f.kursbutton .length ) check = f.kursbutton .checked;
else {
for(var i = 0; i < f.kursbutton .length; i++)
if(f.kursbutton [i].checked) check = true;
}
if ( !check ) {
alert('Bitte wählen Sie einen Kurs aus.');
}
vor " return check; " nochmals einfügen?
Struppi.
bitte zitiere nur das worauf sich deine Antwort bezieht (in diesem Fall gar nichts), so lesen sich deine Nachrichten besser, Danke!
Eine Frag ist nun aber doch noch aufgetaucht.
Wenn ich nund für die 2.Serie von Radiobuttens --> kursbutton den selben Check machen möchte, kann ich dann das selbe angepasste Skript:
if(!f.kursbutton .length ) check = f.kursbutton .checked;
Die Leerzeichen vor den Punkten sind hier fehl am Platz.
else {
for(var i = 0; i < f.kursbutton .length; i++)
if(f.kursbutton [i].checked) check = true;
}
if ( !check ) {
alert('Bitte wählen Sie einen Kurs aus.');
}vor " return check; " nochmals einfügen?
Ja, das return check soll erst am Schluss der Funktion stehen, um das Formular entweder abschicken zu lassen (bei true) oder nicht (bei false)
Struppi.
Sorry, habe vergessen die Textvorgabe zuerst aus dem Nachrichtenfeld zu löschen.
Ok, werde ich so machen!
Vielen Dank nochmals
Guss
Girasol
Hallo,
nehme mal an, dein Script erwartet immer ein Array, wenn es die Radiobuttons abfragt. Bei nur einem Radiobutton erhält du aber nur ein Element.
var rbs=document.forms[0].elements.myradiobutton;
if (!rbs) alert("keine Radiobuttons")
else if(! rbs.length ) rbs=new Array(rbs);
var z=0;
for (var i=0;i<rbs.length;i++){
z++;
}
alert("es gibt: "+ z +" Radiobuttons");
Gruß plan_B
Hi!
Ich habe da ein Problem mit einer Radionutten abfrage und habe daher das Forum durchsucht. Dabei bin ich auf einen Eintrag von Jenni, am 21. 05. 2003 gestossen.
Du suchst Telefonsex im Radio? Oder was?
Bin ich eigentlich der einzige hier, dessen Phantasie amok laeuft, wenn er sich ueberlegt, was Radionutten sind? *denk* :)
Hallo Steel,
Bin ich eigentlich der einzige hier, dessen Phantasie amok laeuft, wenn er sich ueberlegt, was Radionutten sind? *denk* :)
ich würde nicht sagen, dass meine Phantasie Amok läuft - aber ich bin beim Lesen auch kurz gestolpert und dachte, "ups, was sind wohl Radionutten?"
So long,
Martin