Mam następujące wartości na liście rozwijanej, jest wiele razy, ale tylko pierwsza wartość pokazana tutaj:

<select id="wpforms-74405-field_36"><option value="3/24/2020 - 1:15 PM" >3/24/2020 - 1:15 PM</option>....

Chcę „.usunąć” wszystkie opcje, które minęły. Wiem, że ukrywanie opcji za pomocą JS nie jest idealnym rozwiązaniem. Nie mogę uzyskać nowej daty (), aby zaakceptować 24.03.2020 - 13:15.

0
Jimmyco 25 marzec 2020, 01:34

2 odpowiedzi

Najlepsza odpowiedź

Użyłem Moment.js, jak zasugerował Daniel. Przetwarzanie „MM / DD / RRRR” w obiekt Date.

var currentlyd = new Date();
$('#wpforms-74405-field_36 > option').each(function() {
var meow = $(this).val();
var currentlyd = moment(currentlyd).add(1, 'hours');
var bigmeow = new Date(moment(meow, "MM/DD/YYYY - hh:mm A"));
var bool = (moment(bigmeow).isAfter(moment(currentlyd)));
if (bool == false && isNaN(bigmeow) == false) {
$(this).remove();
}
});
0
Jimmyco 28 marzec 2020, 21:32

Możesz użyć biblioteki, takiej jak moment.js, do bardziej zaawansowanego analizowania, ale prawdopodobnie istnieje prostsze rozwiązanie zakładające, że możesz modyfikować zawartość listy rozwijanej.

Dodałbym atrybut danych do każdego <option> (lub zmieniłbym wartość, jeśli nie używasz go do niczego innego), aby zachować odpowiednią wartość czasu (ms od epoki). Jak na przykład:

<option value="3/24/2020 - 1:15 PM" data-time="1585090680723">3/24/2020 - 1:15 PM</option>

Nie wiem, w jaki sposób generujesz swoją listę opcji, ale większość języków pozwoli ci pobrać liczbową wartość czasu z daty.

Następnie możesz łatwo porównać tę wartość z new Date().getTime(), aby sprawdzić, czy jest mniejsza niż teraz.

0
Daniel 24 marzec 2020, 22:59