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 177
    J'aime reçus:
    328
    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
Actualiser un script php toutes les 10 secondes Développement d'un site Web ou d'une appli mobile 6 Septembre 2021
PHP : problème de comparaison égalité dans boucle FOR avec incrément décimal de 0.1 Développement d'un site Web ou d'une appli mobile 26 Août 2021
Cache Etag nginx et PHP ? Administration d'un site Web 7 Août 2021
Fichier avec ou sans extension php pour le référencement Crawl et indexation Google, sitemaps 3 Août 2021
mon code ne fonctionne pas pour masquer les .php URL Rewriting et .htaccess 31 Juillet 2021
Malware S.Susp.PHP.gen... Administration d'un site Web 15 Juillet 2021
La fonction mail (PHP) ne passe pas ! Demandes d'avis et de conseils sur vos sites 28 Juin 2021
Fonction récursive PHP. Développement d'un site Web ou d'une appli mobile 24 Avril 2021
Redirections .htm en .php URL Rewriting et .htaccess 16 Mars 2021