RISOLTO validazione html senza bloccare invio

Stato
Discussione chiusa ad ulteriori risposte.

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
@zabi credo che tu gli stia complicando la vita cosi... piuttosto che ci faccia vedere il suo codice.... aspetterei a parlare di Php quando questi controlli li puo' fare tutti client side senza troppi problemi con una sola funzione
Sono d'accordo.

I controlli li puo fare anche in html5.

Puo darsi che la validazione lato server non gli serva.

Attualmente valida la form in html5. Se tutti i campi sono validi allora puo fare la richiesta per l'invio di dati. In caso contrario la puo fare comunque ma solo dei campi validi. li ho messo la struttura presa dal framework bootstrap.
 

personalele

Nuovo Utente
51
10
Ciao e grazie a tutti.
Ho provato la soluzione di @zabi che ringrazio, ma che sembra non permettere di continuare il submit se la validazione fallisce. Il problema non è nella validazione dei dati in quanto lato server con PHP è già implementata. Avrei bisogno solamente di "evidenziare" all'utente i campi che ha tralasciato o inserito male ogni volta che apre i form (sono diversi moduli di raccolta informazioni). Volevo solo trovare una "scorciatoia" alla soluzione di @Skills07 che dovrei implementare sia per ogni controllo, per avere la validazione in tempo reale, che in fase di caricamento del form, per avere la situazione quando l'utente accede in modifica ai dati già memorizzati. Per quello avevo pensato di rendere obbligatori tutti i campi e validarli con HTML con i pattern, se solo riuscissi poi a salvare i dati nonostante la validazione html fallita.
Vi ringrazio!
Gabriele.
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,447
11,502
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
@personalele la funzione che ti ho dato basta chiamarla una volta sulla submit, implementando li dentro i tuoi controlli.

JavaScript:
function validateForm() {
  var x = document.forms["myForm"]["fname"].value;
  if (x == "") {
    alert("Name must be filled out");
    return false;
  }
}

puoi attuare anche un qualcosa cosi.
 

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
Ho provato la soluzione di @zabi che ringrazio, ma che sembra non permettere di continuare il submit se la validazione fallisce.
Ora ho capito. Non ti permette di continuare con il submit perchè è impostata per inviare i dati in modo asincrono in ajax.
In questo modo:

JavaScript:
$(document).ready(function(){
   
    (function () {
      'use strict'

      // Fetch all the forms we want to apply custom Bootstrap validation styles to
      var forms = document.querySelectorAll('.needs-validation')

      // Loop over them and prevent submission
      Array.prototype.slice.call(forms)
        .forEach(function (form) {
           
          form.addEventListener('submit', function (event) {
            if (!form.checkValidity()) {
              event.preventDefault()
              event.stopPropagation()
            }
       
           
            form.classList.add('was-validated')
          }, false);
         
         
          $('#btnsubmit').click(function(event){
             
              var vusername = $("#username").val();
             
              console.log("username " + vusername);
             
              $.post("http://localhost/index.php", //Required URL of the page on server
                        { username:vusername },
               
                        function(response,status){ // Required Callback Function
                            alert("response: " + response+" status : " + status);
                        });
          });
         
        });  
   
    })()
   
});


Ma capisco che invece è richiesto l'effettivo submit. Allora l'impostazione è diversa.
  1. Valida l'input lato client
  2. effettua il submit comunque
  3. aggiorna la pagina con i messaggi di errore e campi compilati ricevuti dal controllo lato server.
Dovrò trovare una libreria che mi fa le validazioni dei campi in php (non potendo usare un framework come codeigniter).

Senza complicare

nella pagina dove ce la validazione imposti i messaggi di errore in variabili di sessione:

PHP:
session_start();
if(isset($_POST['username'])){
    
    if(empty($_POST['username'])){
        $err_fname = "Il campo username non puo essere vuoto";
        $_SESSION['form_username_error'] = $err_fname;
    }else{
        $fname = htmlentities(strip_tags(mysqli_real_escape_string($con, $_POST['username'])), ENT_QUOTES, 'UTF-8');
    }
    
}

nella pagina dove invii la form controlli se ci sono messaggi di errore nella sessione:

PHP:
<?php session_start();
if(isset($_SESSION['form_username_error'] ) &&
   !empty($_SESSION['form_username_error'] ){
?>
     <input type="text" class="form-control was-validated " id="username" placeholder="Username" required value="<?php echo $_SESSION['form_username_valid'] ?>">
     <!-- html di messaggio di errore ->
     <?php echo $_SESSION['form_username_error'];
}
?>
 
Ultima modifica:

personalele

Nuovo Utente
51
10
Ragazzi vi ringrazio tutti,
farò una nuova domanda nel merito specifico di javascript, ma credo di poter dichiarare RISOLTO il problema della validazione dei campi.
A presto, Gabriele.
 
  • Mi piace
Reazioni: BigIssue

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
Ragazzi vi ringrazio tutti,
farò una nuova domanda nel merito specifico di javascript, ma credo di poter dichiarare RISOLTO il problema della validazione dei campi.
A presto, Gabriele.
Ottimo! ci sei riuscito.
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,447
11,502
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
Ottimo perfetto chiudo
 
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili