• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

jquery - znika tekst po walidacji formularza i wciśnięciu submit

Object Storage Arubacloud
0 głosów
495 wizyt
pytanie zadane 7 sierpnia 2017 w JavaScript przez omgl0lwth Początkujący (340 p.)

Witam. Mam za zadanie aby po walidacji formularza wartości zostały zapisane w paragrafie info-1. 

Wszystko niby działa - wartości są tam poprawne - tylko znikają. Ostatnio miałem nawet podobny problem w js - z tym że tam miałem button bez type button dlatego mi znikało - tutaj natomiast jest input submit to on nie powinien być tutaj winowajcą.

Oto kod źródłowy :

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>ASdasd</title>
    <script src="js/vendor/jquery-3.2.1.min.js"></script>

    <style>
        table {
            border-collapse: collapse;
        }
        
        table th {
            text-align: center;
            color: #fff;
            background: #aaa;
            font-weight: bold;
        }
        
        table td {
            padding: 1px 15px;
            border-bottom: 1px solid #ddd;
        }
        
        #formularz label {
            display: inline-block;
            width: 100px;
            text-align: right;
        }
        
        #submit {
            padding-left: 100px;
        }
        
        #formularz div {
            margin-top: 1em;
        }
        
        #formularz div input {
            width: 170px;
        }
        
        textarea {
            vertical-align: top;
            height: 5em;
            width: 170px;
        }
        
        input.invalid,
        textarea.invalid {
            border: 3px solid red;
        }
        
        input.valid,
        textarea.valid {
            border: 3px solid green;
        }
        
        .blad {
            color: red;
        }
        
        .ok {
            color: green;
        }

    </style>
</head>

<body>



    <form method="post">


        <fieldset>
            <label for="firstname">Firstname</label>
            <input type="text" name="firstname" id="firstname">
            <br>

            <label for="lastname">Lastname</label>
            <input type="text" name="lastname" id="lastname">

            <br>

            <label for="country">Country</label>
            <select name="country" id="country">
                        <option value="1">Poland</option>
                        <option value="2">Germany</option>
                        <option value="3">Hungary</option>
                        <option value="4">France</option>
        </select>


            <input type="submit" id="submitbtn" name="send" value="Send">
            <input type="reset">
        </fieldset>

    </form>

    <p id="info-1"></p>

    <hr>
    <table>
        <thead>
            <tr>
                <th>Lorem</th>
                <th>Omnis</th>
                <th>Rem</th>
                <th>Voluptatibus</th>
                <th>Architecto</th>
                <th>Voluptates</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Bombaj</td>
                <td>Buenos Aires</td>
                <td>Delhi</td>
                <td>Kair</td>
                <td>Seul</td>
                <td>Lagos</td>
            </tr>
            <tr>
                <td>Berlin</td>
                <td>Paryż</td>
                <td>Monachium</td>
                <td>Warszawa</td>
                <td>Rrzym</td>
                <td>Ateny</td>
            </tr>

        </tbody>
    </table>

    <p id="info-2"></p>

    <script>
        $(document).ready(function() {

            $('#firstname').on('blur', function() {
                var input = $(this);
                var firstName_length = input.val().length;
                if (firstName_length >= 5 && firstName_length <= 15) {
                    input.removeClass("invalid").addClass("valid");
                    input.next('.komunikat').text("Wprowadzono poprawną nazwę.").removeClass("blad").addClass("ok");
                } else {
                    input.removeClass("valid").addClass("invalid");
                    input.next('.komunikat').text("Nazwa musi mieć więcej niż 4 i mniej niż 16 znaków!").removeClass("ok").addClass("blad");

                }
            });

            $('#lastname').on('blur', function() {
                var input = $(this);
                var lastName_length = input.val().length;
                if (lastName_length >= 5 && lastName_length <= 15) {
                    input.removeClass("invalid").addClass("valid");
                    input.next('.komunikat').text("Wprowadzono poprawną nazwę.").removeClass("blad").addClass("ok");
                } else {
                    input.removeClass("valid").addClass("invalid");
                    input.next('.komunikat').text("Nazwa musi mieć więcej niż 4 i mniej niż 16 znaków!").removeClass("ok").addClass("blad");

                }
            });

            $('#submitbtn').click(function(event) {
                var firstName = $('#firstname');
                var lastName = $('#lastname');
                var country = $("#country");
                
                
                if(firstName.val() != "" && lastName.val() != "")
                    {
                        alert("asdsdadsa");
                          $("#info-1").append(firstName.val() + " <br>" + lastName.val() + "<br>" + country.val());
                    }
                
                if (firstName.hasClass('valid') && lastName.hasClass('valid')) {
                    alert("Pomyślnie wysłano formularz.");
                    $("#info-1").append(firstName.val() + " <br>" + lastName.val() + "<br>" + country.val());

                } else {
                    event.preventDefault();
                    alert("Uzupełnij wszystkie pola!");
                }
            });
        });

    </script>

</body>

</html>

 

komentarz 7 sierpnia 2017 przez ScriptyChris Mędrzec (190,190 p.)

 tutaj natomiast jest input submit to on nie powinien być tutaj winowajcą

Sprawdź, co się stanie gdy zamienisz type="submit" na type="button".

2 odpowiedzi

0 głosów
odpowiedź 7 sierpnia 2017 przez omgl0lwth Początkujący (340 p.)
No w sumie tak. Mój błąd - aczkolwiek smaczek zadania polegał właśnie, że nie można było ingerować w kod html tylko sam skrypt - czy istnieje zatem jakieś skryptowe rozwiązanie z typem inputa - submit?
0 głosów
odpowiedź 9 sierpnia 2017 przez Kornelia Kobiela Nałogowiec (33,340 p.)

Jeżeli dasz button[type=submit], to bierze on udział w zatwierdzeniu całego formularza. Obsługujesz wtedy event submit dla formularza, a nie click dla przycisku. Standardowym zachowaniem formularza po zatwierdzeniu jest przeładowanie strony, a co za tym idzie, utrata danych w nim zapisanych ( o ile nie zostały wysłane na serwer). Aby tego uniknąć zastosuj funkcję preventDefault [link do MDN]. Swego czasu napisałam artykuł na temat zdarzeń. Polecam przeczytać [link do artykułu]

Podobne pytania

+1 głos
0 odpowiedzi 2,013 wizyt
pytanie zadane 29 lipca 2017 w JavaScript przez ania52 Nowicjusz (210 p.)
0 głosów
1 odpowiedź 78 wizyt
pytanie zadane 12 stycznia 2023 w HTML i CSS przez Julka_99 Użytkownik (540 p.)

92,568 zapytań

141,422 odpowiedzi

319,635 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...