2017-06-27 2 views
0

Ich arbeite derzeit an einem Anlagenbuchungssystem. Bei der Buchung einer Einrichtung können Benutzer ein Zeitfenster auswählen. Wenn der Benutzer ein Datum und eine Einrichtung für die Buchung auswählt, wird ein Ajax-Anruf durchgeführt, um alle verfügbaren Zeitfenster abzurufen. Die zurückgegebenen Daten enthalten die Zeitfenster für Wochentage und Wochenenden (ja, sie haben unterschiedliche Zeitfenster).Jquery schlägt fehl, Zeilen zu verstecken

Wochentag, Wochenende und Zeitfenster werden in einer Tabelle angezeigt. Es gibt eine weitere Funktion, um zu überprüfen, ob das gewählte Datum ein Wochentag oder ein Wochenende ist. Wenn es ersteres ist, werden die Wochenendzeitfenster ausgeblendet. Wenn es das letztere ist, umgekehrt.

Die Öffnungszeit für Wochentag: 08:00 - 21:00

Die Öffnungszeit für das Wochenende 08:30 - 17:30

Um das Zeitschlitzen zu verbergen, die folgenden Code verwendet wird:

if (lastId != end_time_id) { 
    for (var i = lastId + 1; i <= end_time_id; i++) { 
     $('#trTimeslot' + i).hide(); 
    } 
} 

Wenn der Code einwandfrei funktioniert, werden die Zeitschlitze wie folgt dargestellt werden:

Ausgewählt Datum: 27. Juni 2017, Dienstag (Wochentag)

Correct Time Slots

Ausgewählt Datum: 1. Juli 2017, Samstag (Wochenende)

Correct Time Slots Weekend

Doch manchmal , der Code funktioniert nicht. Manchmal gezeigt die Zeitschlitze werden beide Wochentagen und Wochenenden zeigen:

Ausgewählt Datum: 27. Juni 2017, Dienstag (Wochentag)

Wrong Time Slots Shown

Es ist auch zu beachten, dass 7 - 8 Funktionen , gefüllt mit Ajax-Anfragen, werden aufgerufen, bevor die Zeitfenster angezeigt werden. Die Funktion zum Ausblenden der Zeilen "Wochenende" oder "Wochentag" ist die 5. Funktion.

Die Frage ist, kann ich irgendetwas tun, um sicherzustellen, dass die Zeilen ausgeblendet werden, bevor die Zeitfenster dem Benutzer angezeigt werden?

Ich entschuldige mich, dass ich nicht mehr Codes anzeigen kann, da die Firma ziemlich empfindlich auf diese Art von Sachen ist.

Jede Hilfe oder Vorschläge würden sehr geschätzt werden.

+0

'kann nicht mehr codes' zeigen zu zeigen - Sie ** ** jeden Code nicht gezeigt haben. Ihre Chancen, eine sinnvolle Antwort zu erhalten, ist gleich Null ... 'die 5. Funktion' Ich schlage vor, dass Sie die fünfte Funktion reparieren –

+0

@JaromandaX Ich habe den JQuery-Code zum Verbergen der Tabellenzeilen angezeigt. –

+0

ja, müssen Sie die Frage bearbeitet haben? und diese 3 Zeilen helfen nicht –

Antwort

1

Der zu verbergende Code wird vor dem Code ausgeführt, der die Zeittabelle füllt, und fügt die Schleife dem Rückruf hinzu, nachdem die Daten in die Zeittabelle eingefügt und angezeigt wurden.

+1

Diese Antwort hat sehr geholfen. Vielen Dank! –

0

Dies mag keine absolute Antwort auf das Problem sein, würde ich eher vorschlagen, das Gegenteil zu tun. Von der Problembeschreibung nehme ich an, dass es einen Ajax-Aufruf gibt, der die Daten & zurückgibt, nach denen die Funktion auslöst, um die irrelevanten Zeilen auszublenden.Eine Minute Verzögerung wird es wegen der DOM-Traversal

Alternativ

  1. zunächst die Ansicht (Wochenenden & Zeitschlitz) verbergen.
  2. Überprüfen Sie den Zustand und zeigen Sie nur relevante Daten an.
  3. Bis dahin kann es ein Spinner auf dem Bildschirm sein work in progress