Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ JavaScript _ [jQuery] Walidacja formularza dla progressboksa

Napisany przez: Malinaa 30.08.2021, 11:01:17

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.

Napisany przez: gitbejbe 30.08.2021, 18:41:07

Cytat
https://jqueryvalidation.org/documentation/

Napisany przez: Malinaa 31.08.2021, 08:01:22

Dzięki, ale nie znalazłem odpowiedzi w 10 minut, a gdybym miał więcej czasu nie pytał bym, a doszedł do rozwiązania.
Jeśli ktoś już doszedł, będę wdzięczny za kilka linii kodu.

Napisany przez: Pyton_000 31.08.2021, 09:14:06

A może po prostu coś takiego?

Cytat
<form>
<input type="text" required name="test1"/>
<input type="text" required name="test2"/>
<button id="sent">
Send
</button>
</form>

document.querySelector("#sent").addEventListener('click', (event) => {
if(event.target.form.checkValidity()) {
alert('Form is ok');
return;
} else {
alert("Form is NOT ok")
}
event.preventDefault;
})

Napisany przez: Malinaa 13.09.2021, 09:57:19

Mam tak:

Kod
document.querySelector("#btnSubmit").addEventListener('click', (event) => {
  if (event.target.form.checkValidity() && ($('#fieldProgress').val() != '')) {
   setTimeout(function () {
     var newprogress = 100;
     $('#progressBox').removeClass('hidden');
     $('#progressBar').width(newprogress + "%").attr('aria-valuenow', newprogress);
   }, 1000);
  }
  event.preventDefault;
})


zdaje się, że jest Super.
Thnx

Napisany przez: Pyton_000 21.09.2021, 10:23:52

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;
})

Napisany przez: trueblue 21.09.2021, 12:28:06

Tak na 100%:

  1. if (event.target.form.checkValidity() && (document.querySelector('#fieldProgress').value != '')) {
  2. .
  3. .
  4. .
  5. event.preventDefault();


Napisany przez: Pyton_000 23.09.2021, 18:21:59

True. Umnknął mi ten kawałek

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)