PHP empêcher form onsubmit si formulaire invalide

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Snowman91, 29 Juin 2020.

  1. Snowman91
    Snowman91 Nouveau WRInaute
    Inscrit:
    29 Juin 2020
    Messages:
    2
    J'aime reçus:
    0
    Bonjour,

    J'ai un form et un bouton submit qui se présentent comme ceci :

    <form method="post" class="needs-validation" onsubmit="return sendData();" novalidate>
    <button type="submit" class="btn btn-primary" name="valider" value="Confirmation" id="subBtn">Confirmation</button>

    Ma fonction sendData() contient l'insertion du formulaire :

    function sendData()
    {
    var emailP = document.getElementById("emailP").value;
    var selectElmt = document.getElementById("genreP");
    (...)

    $.ajax({
    type: 'post',
    url: '../controleurs/hab.php',
    data: {
    emailP:emailP,
    genreP:genreP,
    (...)

    },
    success: function (response) {
    },
    error: function(error) {
    $("#res").text("NOK");
    }
    });


    }

    J'ai ma fonction pour vérifier le formulaire, si des champs ne sont pas remplis correctement. J'aimerais pouvoir stopper le onsubmit pour arrêter l'insertion si il a donc une erreur.

    (function() {
    'use strict';
    window.addEventListener('load', function() {

    var forms = document.getElementsByClassName('needs-validation');

    var validation = Array.prototype.filter.call(forms, function(form) {
    form.addEventListener('submit', function(event) {
    if (form.checkValidity() === true) { alert("Form OK"); }
    else {
    event.preventDefault();
    event.stopPropagation();
    form.onsubmit = "return false";
    alert("Form NOK");
    }
    form.classList.add('was-validated');
    }, false);
    });
    }, false);
    })();

    Faire form.onsubmit = "return false"; ne change rien. Quelqu'un aurait-il une proposition ?

    Merci d'avance
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 119
    J'aime reçus:
    317
    Déjà pourquoi avoir mis novalidate ? Qui est trigger uniquement lors d'un vrai submit (sans event JS).
    De plus il me semble que le onsubmit prend plutôt un callable :
    form.onsubmit = function () {
    return false;
    };

    Si tu veux faire le submit en JS, et utiliser la validation native, il faut appeler manuellement form.checkValidity() : https://www.w3schools.com/JS/js_validation_api.asp

    https://daverupert.com/2017/11/happier-html5-forms/
    https://www.html5rocks.com/en/tutorials/forms/constraintvalidation/
     
  3. Snowman91
    Snowman91 Nouveau WRInaute
    Inscrit:
    29 Juin 2020
    Messages:
    2
    J'aime reçus:
    0
    Merci ! ça marche
     
Chargement...
Similar Threads - PHP empêcher onsubmit Forum Date
Comment empêcher une page en php d' être partagé sur facebook? Facebook 10 Septembre 2015
Quel script PHP conversion HTML -> JSON ? Développement d'un site Web ou d'une appli mobile 17 Février 2021
script PHP erreurs inexplicables. Développement d'un site Web ou d'une appli mobile 14 Février 2021
Demande d'aide php Développement d'un site Web ou d'une appli mobile 4 Février 2021
URL canonique et problème entre / et /index.php Débuter en référencement 20 Janvier 2021
refaire mon site html en PHP et garder un bon référencement Problèmes de référencement spécifiques à vos sites 17 Décembre 2020
[PHPWhois.fr] Vérifiez la disponibilité d'un nom de domaine Demandes d'avis et de conseils sur vos sites 10 Décembre 2020
Du php dans du javascript Développement d'un site Web ou d'une appli mobile 16 Novembre 2020
réécrire /categorie.php?id=xxx en /categorie/id URL Rewriting et .htaccess 13 Septembre 2020
Rediriger Index.php vers racine URL Rewriting et .htaccess 15 Août 2020