Die monatliche Betriebsblindheit ...
Michael Schröpl
- javascript
Hallo Leute,
ab und zu stehe ich bei JavaScript wie der Ochse
vor der Mauer.
Ich möchte gerne prüfen, ob der ausgewählte Eintrag
einer <select>-Auswahlliste einen bestimmten Wert hat
(und in diesem Falle noch ein paar weitere Dinge tun).
Das Formular hat den Namen "formular", das Feld den
Namen "bedeutung", den Vergleichswert bekommt meine
JavaScript-Funktion als Parameter.
function transfer (value_name, value_id)
{
/* Suchbegriff "importieren" (funktioniert) */
var s = parent.frames['head_function'].document.forms['formular'].suchbegriff;
document.forms['formular'].suchbegriff.value = s.value;
/* Leeren Suchbegriff abfangen */
if (s.value == '')
{
alert ('VDB-Suche:\nBitte geben Sie einen Suchbegriff ein!');
s.focus();
return false;
}
/* Ist der Suchbegriff rein numerisch? */
var is_num = (s.value.match(/^\d+$/) ? 1 : 0);
alert ('numerisch: "' + is_num + '"');v
var b = document.forms.formular.bedeutung;
alert ('Bedeutung: "' + b + '"');
/* Formularfeld "Bedeutung" auswerten */
alert ('Bedeutung: "' + b.value + '"');
/* Soll der Suchbegriff eine nichtnumerische
Bedeutung haben? */
alert ('Vergleiche "' + b.value + '" mit "' + value_name + '"');
if ((b.value == value_name) && (is_num))
{
alert ('VDB-Suche nach Namen:\nBitte geben Sie einen Suchbegriff ein,\nder NICHT nur aus Ziffern besteht!');
s.focus();
return false;
}
/* Soll der Suchbegriff eine rein numerische
Bedeutung haben? */
alert ('Vergleiche "' + b + '" mit "' + value_id + '"');
if ((b == value_id) && (!is_num))
{
alert ('VDB-Suche nach IDs:\nBitte geben Sie einen Suchbegriff ein,\nder nur aus Ziffern besteht!');
s.focus();
return false;
}
return true;
}
Im Prinzip klappt das auch tadellos - jedenfalls in
Mozilla, Opera 6 und M$IE 5.0 (viel mehr habe ich
noch nicht getestet).
Nur leider muß es auch mit Netscape 4.7 (und 4.5)
klappen. Und zu meiner Überraschung scheint dieser
den Ausdruck
document.forms.formular.bedeutung.value
nicht zu verkraften (in meinem Fall also "b.value").
Die modernen Browser zeigen bei "alert(b)" jeweils
an, daß b ein "object" sei. Netscape 4 zeigt in
diesem Fall den HTML-Quelltext des kompletten
<select>-Elements an.
Deshalb meine Frage:
Wie komme ich mit Netscape 4.5 an den Wert des
ausgewählten Eintrags eines <select>-Feldes heran?
In der Hoffnung auf eine "Hand-an-Stirn"-Antwort ...
Michael
P.S.: Falls alle Stricke reißen, würde ich über
document.forms['formular'].bedeutung.selectedIndex
gehen - was natürlich viel häßlicher wäre, als
den Wert direkt abzufragen, weil ich mich dann
von der Anordnung der Einträge innerhalb von
<select> abhängig machen würde ... und dieses
Formular wird noch von anderen Entwicklern
gepflegt ...
Hallo Michael,
um es kurz zu machen, nimm alert(b[b.selectedIndex].value); anstelle von alert(b.value);
MfG. Lutz T.
Hallo Lutz,
um es kurz zu machen,
nimm alert(b[b.selectedIndex].value); anstelle von alert(b.value);
Du ahnst nicht, wie sehr mir diese schnelle Antwort geholfen hat
(montag früh ist release freeze, und ich will das Feature unbedingt
noch mit drin haben).
Dankbare Grüße
Michael
Hallo Michael,
da wollt ich dir antworten, aber da war schon eine da... so ein
Mist :)
(montag früh ist release freeze, und ich will das Feature
unbedingt noch mit drin haben).
Was fuer ein Glueck, dass wir das Release verschoben haben.
Gruesse,
CK