PHP empêcher form onsubmit si formulaire invalide

Nouveau WRInaute
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
 
WRInaute accro
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/
 
Discussions similaires
Haut