Archiv verlassen und diese Seite im Standarddesign anzeigen : [JavaScript] wertebereich in dropdown
HAllo Leute,
ich hab leider zu wenig mit javascript am hut gehabt und muss grad was umsetzen, von dem ich nich mal weiß wie ich hier beginnen soll.
ich will 2 dropdownmenüs bereitstellen, mit denen man einen uhrzeitbereich einstellt, also z.b: von 13 - 18 Uhr
also jede uhrzeit in einem dropdown, allerdings darf im zweiten dropdown der stundenbereich erst eine std höher anfangen, als der, den man im linken gewählt hat, damit soll gewährleitet sein, dass die angabe nicht auf den nächsten Tag berechnet werden.
es geht also immer nur um den Zeitraum eines tages !
über hilfe oder ansätze wäre ich wirklich sehr dankbar !
damit soll gewährleitet sein, dass die angabe nicht auf den nächsten Tag berechnet werden. Was machst du denn bei Eingabe von 23 Uhr?
*move* nach Projekthilfe
dann darf im zweiten dropdown nur noch 0 Uhr angeboten werden.
so sollte es dann jedenfalls sein.
wenn ich die abfrage abschicke gehts an ein php-script, in dem
dann ein sql-statement dann <=23.59 erfragt
Original geschrieben von ways
allerdings darf im zweiten dropdown der stundenbereich erst eine std höher anfangen, als der, den man im linken gewählt hat
Also scheiterst du an einer simplen If-Abfrage, oder was genau ...?
Wie man Werte aus Formularfeldern abfragt, dazu hast du dich ja schon selber bei SELFHTML informiert.
ja, das hab ich :)
ich bin nun so weit, dass ich allein auf javascript setze,
und hab es auch so umsetzen können, mit viel knobelei...
aber das gehört ja als Berufsanfänger dazu :)
allerdings hab ich nen kleinen fehler drin,
wenn ch bei der ersten auswahl von start_time die 23 wähle, ist alles ok und stop_time wird auf 24 gesetzt, ABER wähle ich die 23 erst in einem zweiten versuch, weil ich z.b zuerst (15) die falsche startzeit gewählt habe, dann zählt er stop_time nur um eins hoch.
so erscheint dann 16, nicht 24.
kann mir da jemand helfen?
// Teil 1
var startHour = parseInt(document.getElementById("start_time").value); // start_time, ist das erste Dropdown
var plus1 = parseInt(1);
var result = startHour+plus1;
var toHour = document.forms.form1.stop_time; // stop_time ist das zweite dropdown
// Teil 2
var zaehler = parseInt(0);
for (var i = result; i <= 24; i++)
{
toHour.options[zaehler] = new Option(i);
zaehler++;
}
hab mal das file ( is eigentlich ne *.php ) angehängt, irgendwo muss ich was mit der schleife übersehen.
Wäre toll, wenn mir da noch jemand aus der klemme helfen kann !
ich beziehe mich jetzt nur auf den geposteten Code, keine Lust auch nur einen Fitzel PHP in dem Zusammenhang ausblenden zu müssen.
var plus1 = parseInt(1); Wozu???
for (var i = result; i <= 24; i++)
{
toHour.options[zaehler] = new Option(i);
zaehler++;
} Kannst du das nicht durch eine Mathematische Operation errechnen???
mathematische operation ?
vielleicht hab ich schon tomaten auf den augen vor lauter knobelei !
es funktioniert ja, sofern ich das "start_time" dropdown nur einmal betätige, wenn ich jedoch die "start_time" option mehr als einmal verstelle, dann klappt das ganze schon nicht mehr anständig...
noch fällt der groschen nicht :(
War auch quatsch... ;)
Ich hatte im wesentlichen auf den zaehler++ geachtet und nicht gesehen, dass du den für das Dropdown benutzt.
hehe.. achso :)
ja, leider fehlt mir wie mit fehlen noch die übung und einiges an erfahrung... ich hab da einige stunden dran gesessen :(
komme aber nicht wirklich vorran, im ersten moment wirkte das so simpel auf mich, aber wie schon gesagt, funktioniert das ganze nur, wenn ich das start_time dropdown nur einmal verwende..
dann stimmt die anzeige im stop_time, wenn ich aber es mehrfach verwende, dann stimmt das mit schleifenausgabe im stop_time nicht mehr....
Hab zwar immer noch keinen vernünftigen Codeausschnitt gesehen, aber werden an irgendeiner stelle vielleicht variablen nicht wieder zurück gesetzt?
ansonsten halt mal nen kurzen Auszug posten.
das mit dem zurücksetzen ist sicher das problem, denn ich kann ja sehen, dass die schleife die ausgabe um die anzahl erweitert, wie ich sie bei der ersten auswahl eingestellt hatte...
irgendwie wird das toHour.length übernommen, weiß aber nicht, wie ich das einem reset unterziehe...
ich hab das script im wesentlich nicht erweitert,
function change()
{
var startHour = parseInt(document.getElementById("start_time").value); // start_time, ist das erste Dropdown
var plus1 = parseInt(1);
var result = startHour+plus1;
var toHour = document.forms.form1.stop_time; // stop_time ist das zweite dropdown
// Teil 2
var zaehler = parseInt(0);
for (var i = result; i <= 24; i++)
{
toHour.options[zaehler] = new Option(i);
zaehler++;
}
}
im body
<select name="start_time" id="start_time" style="width:100px" onchange="change()">
<option selected="selected">Wähle</option>
<option value="0">00 Uhr</option>
....
</select>
<select name="stop_time" id="stop_time" style="width:100px"></select>
irgendwie wird das toHour.length übernommen, weiß aber nicht, wie ich das einem reset unterziehe... Von welchen length redest du?
Und wieso kannst du toHour nicht auf einen Initialwert setzen?
Original geschrieben von TobiaZ
Von welchen length redest du?
Und wieso kannst du toHour nicht auf einen Initialwert setzen?
wenn ich das vorher initialisiere passiert kein unterschied
das length von document.forms.form1.stop_time;
das verwende ich gar nicht, aber nach prüfen hab ich gesehen, dass dies der grund dafür zu sein scheint
wenn ich das vorher initialisiere passiert kein unterschied Vorher bringt ja nichts. Es muss ja beim Ändern passieren. ;)
Haste mal nen "funktionsfähiges" Beispiel online?
ja, hab ich schnell mal online gestellt
Übung (http://ways2web.de/_tmp/)
AHA!!!
So, wenn du die Fehlerbeschreibung richtig abgeliefert hättest, hätten wir uns mal wieder ne Menge sparen können.
Guck doch mal in das Zweite drop down rein, nachdem du den Fall von dir wie beschrieben durchgeführt hast.
Wie du siehst, wird der erste völlig korrekt mit 24 überschrieben. Nur dass die Übrigen werte natürlich(!) nicht überschrieben, geschweige denn gelöscht werden.
Und genau da sind wir wieder beim Zurücksetzen. Du musst natürlich das zweite Drop-Down zu beginn der Änderung leeren.
Fertig.
um dir nun also keine zahnschmerzen zu verursachen :)
wie mach das richtig ? :)
Müsstest eigentlich wissen, dass ich prinzipiell keine Lösungen vorkaue. ;)
... erst recht nicht, wenn der TS das beruflich macht. Nichts für ungut.
seit dem 1.4 !
naja.. alles klar... danke.
Original geschrieben von ways
wie mach das richtig ? :)
Das Zurücksetzen, also Löschen der vorhandenen Options?
http://de.selfhtml.org/javascript/objekte/options.htm#elemente_loeschen
Und ich dachte, du hättest dich informiert ...?
das schon, ich setze nun toHour.options.length = 0; ein,
bin aber felsenfest der Meinung, dass ich das schon mal probiert hatte... na mal sehen, ob das so nun sicher läuft !
|
|