Jak sprawdzić / zweryfikować w jQuery, czy data zakończenia [pole tekstowe] jest późniejsza niż data rozpoczęcia [pole tekstowe]?
jquery
date
jquery-validate
Wejście
źródło
źródło
Odpowiedzi:
Po prostu rozszerzam odpowiedzi na fuzje. ta metoda rozszerzenia działa przy użyciu wtyczki jQuery validate. Sprawdza daty i liczby
Aby z niego skorzystać:
lub
źródło
code
if (wartość == 0) {return true; } else if (! / Invalid | NaN / ...code
Myślę, że to powinno wystarczyć
źródło
Trochę późno na imprezę, ale tu moja część
Oto szczegóły:
źródło
Odwołanie do jquery.validate.js i jquery-1.2.6.js. Dodaj klasę startDate do pola tekstowego daty rozpoczęcia. Dodaj klasę endDate do pola tekstowego daty zakończenia.
Dodaj ten blok skryptu do swojej strony: -
Mam nadzieję że to pomoże :-)
źródło
Właśnie majstrowałem przy odpowiedzi danteuno i odkryłem, że chociaż ma dobre intencje, niestety jest zepsuty w kilku przeglądarkach, które nie są IE. Dzieje się tak, ponieważ IE będzie dość surowe co do tego, co przyjmuje jako argument dla
Date
konstruktora, ale inni nie. Na przykład Chrome 18 dajeTo powoduje, że kod podąża ścieżką "porównania dat" i stamtąd wszystko idzie w dół (np.
new Date("11")
Jest większe niżnew Date("66")
i jest to oczywiście przeciwieństwo pożądanego efektu).Dlatego po namyśle zmodyfikowałem kod, aby nadać priorytet ścieżce „liczb” nad ścieżką „dat” i potwierdzić, że dane wejściowe są rzeczywiście numeryczne, dzięki doskonałej metodzie przedstawionej w sekcji Waliduj liczby dziesiętne w JavaScript - IsNumeric () .
W końcu kod staje się:
źródło
Wartości dat z pól tekstowych można pobrać za pomocą metody .val () jquery, takiej jak
Zdecydowanie zalecamy przeanalizowanie ciągów dat przed ich porównaniem. Obiekt Date Javascript ma metodę parse (), ale obsługuje tylko formaty daty w USA (RRRR / MM / DD). Zwraca milisekundy od początku epoki unixa, więc możesz po prostu porównać swoje wartości z> lub <.
Jeśli potrzebujesz różnych formatów (np. ISO 8661), musisz skorzystać z wyrażeń regularnych lub bezpłatnej biblioteki date.js.
Jeśli chcesz być super przyjazny dla użytkownika, możesz użyć datepickers ui jquery zamiast pól tekstowych. Istnieje wariant DatePicker, który umożliwia wprowadzanie zakresów dat:
http://www.filamentgroup.com/lab/date_range_picker_using_jquery_ui_16_and_jquery_ui_css_framework/
źródło
Dlatego potrzebowałem, aby ta reguła była opcjonalna i żadna z powyższych sugestii nie jest opcjonalna. Jeśli wywołuję metodę, jest ona wyświetlana jako wymagana, nawet jeśli ustawię ją na wymagającą wartości.
To jest moje wezwanie:
Moja
addMethod
nie jest tak solidna, jak najlepiej oceniana odpowiedź Mike'a E., ale używam selektora dat JqueryUI, aby wymusić wybór daty. Jeśli ktoś może mi powiedzieć, jak upewnić się, że daty są liczbami i mieć metodę opcjonalną, byłoby super, ale na razie ta metoda działa dla mnie:źródło
W javascript / jquery większość programistów używa porównania dat od i do, które jest ciągiem znaków, bez konwersji na format daty. Najprostszym sposobem porównania od daty jest większa niż data.
Zawsze analizuj datę od i do daty przed porównaniem, aby uzyskać dokładne wyniki
źródło
Podoba mi się to, co powiedział Franz, bo tego używam: P
źródło
Lub odwiedź ten link
źródło
źródło
Mam nadzieję, że to pomoże :)
źródło
Najpierw podziel wartości z dwóch pól wejściowych za pomocą funkcji podziału. następnie połącz to samo w odwrotnej kolejności. po konkatacji naród przeanalizuj go na liczbę całkowitą. następnie porównaj dwie wartości w instrukcji in if. np. 1> 20-11-2018 2> 21-11-2018
po podzieleniu i konkatacji nowych wartości do porównania 20181120 i 20181121, następne porównują to samo.
źródło
to powinno działać
źródło
Jeśli gwarantujemy, że format jest poprawny RRRR / MM / DD i dokładnie taki sam między dwoma polami, możesz użyć:
Jako porównanie ciągów
źródło