Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] Walidacja formularza dla progressboksa
Malinaa
post
Post #1





Grupa: Zarejestrowani
Postów: 577
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Witam,
napisałem taki kod:

Kod
<script>
            $("#btnSubmit").click(function() {
                var fields = false;
                var name = $('#contact_form_name').val(); // input type=text
                var email = $('#contact_form_email').val(); // input type=email
                var theme = $('#contact_form_theme').val(); // input type=text
                var message = $('#contact_form_message').val(); // type textarea
                var policy = $('#contact_form_policy').is(':checked'); // input type=checkbox
                // INFO: Dla formularza id="formContact" wspolny dla wszystkich pol jes atrybut required="required".

                if (!name || !email || !theme || !message || !policy) { fields = true; }

                if ((!fields) && ($('#fieldProgress').val() != '')) {
                    setTimeout(function () {
                        var newprogress = 100;
                        $('#progressBox').removeClass('hidden');
                        $('#progressBar').width(newprogress + "%").attr('aria-valuenow', newprogress);
                    }, 1000);
                }
            });
        </script>


Przed wykonaniem if ((!fields) && ($('#fieldProgress').val() != '')) należy sprawdzić,
czy wszystkie powyższe o różnych typach pola z tylko jednym wspólnym atrybutem dla wszystkich required="required" zostały wypełnione.

Jak uprościć kod, pozbyć się tylu var'ów?
Tak, aby było super PRO, bo obecnie po prostu działa, a chciałbym lepiej.

Ten post edytował Malinaa 30.08.2021, 11:03:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


To może pozbądź się całkiem jQ

Kod
document.querySelector("#btnSubmit").addEventListener('click', (event) => {
  if (event.target.form.checkValidity() && ($('#fieldProgress').val() != '')) {
   setTimeout(function () {
     const newprogress = 100;
     let progessBar = document.querySelector("#progressBox");

     progessBar.classList.remove('hidden');
     progessBar.setAttribute('width', newprogress + "%");
     progessBar.setAttribute('aria-valuenow', newprogress);
   }, 1000);
  }
  event.preventDefault;
})
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 01:44