Bonjour,

Je vérifie un champ de formulaire avec javascript en utilisant ajax

J'arrive à bloquer l'appel au serveur quand response.error =true mais je n'arrive pas quand il n'y a plus d'erreur (response.error = false) à lancer l'appel au serveur et effectuer la requête PHP


.done(function(response) {
            if(response.error == true)
                {
                 $('#reference').addClass('error').after('<span class="error">'+ "Cette référence est déjà enregistrée" +'</span>').next().hide().delay(speed).slideDown(speed);
                event.preventDefault(); //empêcher une action par défaut*/  
                }
else
 {  //!!! QUOI FAIRE ?
}


Comment faire ?

Merci pour votre aide
Modifié par dudu22 (30 Nov 2023 - 18:26)
Modérateur
Salut,

Et bah il faut mettre ton appel AJAX dans la seconde parti si le Js n'a pas détecté d'erreur non ?

Bonne journée
Je pense avoir compris ce que tu disais, j'ai mis l'ajax dans une fonction à part et en fonction du résultat true ou false) je mets e.preventdefault();

Le problème c'est que la fonction avec l'ajax ne fonctionne pas et donc je passe directement à la validation PHP

Mon code :


$("#plant_Add_Form").submit(function(e){

var reference_value = $('#reference').val();      

var result_duplicate = duplicate(reference_value);

if(result_duplicate)
    {
    e.preventDefault();    
    }
        

}); // Fin Submit

function duplicate(ref) {
   
        $.ajax({
        url: "/fr/BO/Plants/checkReference",
        type: "POST",
        data: {reference: ref},
        dataType: "json"
        }) 
        .done(function(response) {
            if(response.error)
                {
                $('#reference').addClass('error').after('<span class="error">'+ "Cette référence est déjà enregistrée" +'</span>').next().hide().delay(speed).slideDown(speed);    
                return true;    
                }
            else
                {
                return false;    
                }    
        })
        .fail(function(jqXHR, textStatus, errorThrown) {
            return false;
        
        });//FIN AJAX 

}



Merci pour votre aide
Modifié par dudu22 (01 Dec 2023 - 21:35)
Finalement j'ai uniquement fait un contrôle sur l'input en particulier en utilisant onchange
Modifié par dudu22 (20 Dec 2023 - 00:05)