Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] Walidacja formularza dla progressboksa
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Malinaa
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.
gitbejbe
Cytat
Malinaa
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.
Pyton_000
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;
})
Malinaa
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
Pyton_000
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;
})
trueblue
Tak na 100%:

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

Pyton_000
True. Umnknął mi ten kawałek
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.