Czy do zdarzenia onclick mogę dopisać dwie funkcje? Czy raczej nie powinno się tak tego stosować?
Bez nadmiernego kombinowania i utrudniania sobie życia - dajesz jedną funkcję, a ona niech robi po kolei to, co jest potrzebne. Jeśli widać, że pewne rzeczy są powtarzalne, albo z innego powodu warto je wydzielić do osobnej funkcji - tak robisz.
Przykład - jak pisałem parę postów wcześniej, dodawanie wpisów do tabeli zrobiłem w postaci powtórzenia 3 linijek, które wpis dodają, a przy każdym powtórzeniu tylko zmieniałem dodawaną treść. Zrobiłem to specjalnie, żebyś miał zadanie do poprawienia :D
Inny przykład czegoś, co warto wydzielić do osobnej funkcji - sprawdzanie poprawności danych (czyli odpowiedź na następne pytanie).
W każdym razie - to, co zrobiłeś jest raczej nieładne (w sensie - dodanie dwóch funkcji w obsłudze zdarzenia onclick
). Chociażby dlatego, że - jak sam zauważyłeś - druga funkcja zostanie wywołana, niezależnie od tego, co stwierdzi pierwsza
Jak zatrzymać wprowadzanie danych do tabeli w sytuacji, gdy któryś z danych nie został wprowadzony, (pomimo wyświetlenia alertu, dane wpisują się do tabeli).
W obecnej postaci raczej to nie będzie działać. Teraz jest tak, że wywołujesz pierwsza funkcję, ona coś robi, a następnie (niezależnie od wyniku jej działaniai) jest wywoływana druga. Zamiast tego wywołaj pierwszą funkcję, a z niej drugą.
Powinno to wyglądać mniej-więcej tak: pierwsza funkcja się odpala, następnie wywołuje drugą. Druga sprawdza, czy wprowadzone dane są OK i zwraca jakiś wynik. Jeśli wynik jest pozytywny, to pierwsza funkcja kontynuuje działanie i dodaje dane do tabelki. W przeciwnym przypadku zostaje wyświetlony błąd i pierwsza funkcja kończy swoje działanie, bez dopisywania czegokolwiek. Ważne jest, żebyś nie próbował niczego pisać w tabeli do czasu uzyskania potwierdzenia ze strony funkcji sprawdzającej, że dane są poprawne.
Odpowiadając na Twoje pytanie - trochę odwrotnie się za to zabierasz. Nie masz zatrzymywać pisania w sytuacji błędu, ale nie zaczynaj pisać, zanim się nie upewnisz, że wszystko jest OK.
Czy można zaimplementować ładną kontrolkę do wybierania daty w formularzu?
Tak, jak napisał @stivens - input type="date"
. Coś mi świta, że nie wszystkie przeglądarki sobie z tym radzą, ale nie pamiętam szczegółów i nie chcę wprowadzać w błąd. Może to było w jakichś starszych wersjach - sprawdziłem na szybko i u mnie to działa... A może po prostu z wiekiem już demencja człowieka dopada, a input date
jest zupełnie OK ;)