11486 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Alors j'essaye actuellement de coder un formulaire qui vérifie d'abord si les informations sont disponibles pour ensuite envoyer le formulaire à l'adresse souhaitée. En ce qui concerne la partie ajax et vérification, tout marche.

Le problème vient du bouton submit qui est désactivé au départ pour la fonction ajax et je n'arrive pas à le réactiver ou à forcer l'envoi des données avec le changement de page :


$(document).keydown(function(event){
        if ( event.keyCode == 13 ) {

            envoyer();
        }
    });

    $('#submit').click(function (e) {
        e.preventDefault();
        envoyer();
    });
function envoyer () {
$.post(
                'ajax_inscription.php',
                {
                    // nom et prénom
                    nom : $('#nom').val(),
                    prenom : $('#prenom').val(),
                    // pseudo
                    pseudo : $('#pseudo').val(),
                    //mail
                    mail : $('#mail').val(),
                    //mdp
                    mdp : $('#mdp').val(),
                    mdp2 : $('#mdp2').val()
                },

                function(data){
// mdp
                        var mdp;
                        mdp = $('#mdp').val();
                        //mdp 2
                        var mdp2;
                        mdp2 = $('#mdp2').val();

                        if (mdp == mdp2) {

                            // les mdp sont bons
                            $("#resultat").html("<p>login libre, vous êtes inscrit</p>");
                            console.info(data + ' test');
                            console.info(mdp + ' / ' + mdp2);
                            $("form").submit();

                        } else {

                            // les mdp ne sont pas bons
                            $("#resultat").html("<p>Mots de passe différents</p>");
                            console.info(data + ' test');
                            console.info(mdp + ' / ' + mdp2);
                        }


Donc l'idée, c'est que j'arrive à réactiver l'envoi du formulaire avec la condition if des mdp, j'ai testé pleins de trucs mais je n'arrive pas à comprendre comment réagit javascript malgré tout.
Salut piohb !

Tu peux raisonner différemment pour résoudre ton problème.

Actuellement, tu désactives l'envoi des données quoiqu'il arrive, tu fais tes tests en AJAX dont le résultat détermine s'il faut réactiver l'envoi des données ou non.

Tu peux simplement commencer par faire tes tests, et si le résultat est négatif alors tu désactives l'envoi des données. De cette manière :


$(document).ready(function() {
    $('#form').on('submit', function(e) {
        // la variable error représente le résultat des tests
        var error = true;
        // les données ne sont pas envoyées s'il y a une ou des erreur(s)
        if (error) e.preventDefault();
    });
});


J'espère t'avoir aidé, good luck !
Meilleure solution
D'accord merci beaucoup mais est-ce que se serait possible de plus détailler le code ? à vrai dire je ne sais pas où placer toutes mes conditions :

$(document).ready(function() {
    $('#form').on('submit', function(e) {
        // la variable error représente le résultat des tests
        var error = true;
$.post(
                'ajax_inscription.php',
                {...},
function(data){

if (data == 0){
// si c'est bon
var error = false;
} else {
var error = true;
}
        // les données ne sont pas envoyées s'il y a une ou des erreur(s)
        if (error) e.preventDefault();
    });
});


Quelque chose comme ça ? que dois-je faire avec le dernier if qui annule le submit ? est-ce que cette syntaxe est bonne ?
Dans le "success" de ta requête ajax tu fais un
$('#submit').submit() et voila.


 $.ajax({
       url : 'fichier.php',
       type : 'POST',
       dataType : 'html', 
       success : function(data, statut){ 
           $('#submit').submit()
       }
    });

Modifié par JENCAL (08 Nov 2018 - 12:06)