-1
votes

Obtenir la valeur précédente à partir d'une sélection de Select à l'aide de la fonction OnCHange

J'ai besoin d'obtenir la valeur précédente d'un SELECT (au cas échéant si l'AJAX échoue -> Définissez l'ancienne valeur de retour)

La sélection est la suivante: P>

if(typeof response.prev !== 'undefined' ){
    sel.value = response.prev;
}


4 commentaires

Il y a une option Ajax appelée erreur , vous n'avez pas besoin d'utiliser un si / else.


@Ilamelshobokshy Il s'agit toujours d'un modèle valide que certaines API renvoient un code de réponse 200 et donnent des détails sur les échecs dans les données de réponse


@RoryMccrossan n'a pas dit qu'il avait tort, il suffit de le pointer :-)


@Inlamelshobokshy La réponse est un json comme ceci: ['erreur' => true, "msg '=>" message d'erreur "]


3 Réponses :


0
votes

Conservez la valeur précédente avant de passer à la méthode Ajax et s'il s'agit de la réussite, définissez la valeur que votre nouvelle couleur. XXX PRE>

JQUERY P>

var prValue = $('#your_select').val();

function setColor(sel){
   prValue 
   $.ajax({
     url: set_color_url,
     type: 'POST',
     data: {id: sel.value},
     success: function (response) {
        if (!response.error) {
            // the color it`s changed :)
            prValue = sel.value;
        } else {                
            // something went wrong
            // change to the prev value
            // now you can get your previous value from this var `prValue`;
        }
     }
   });
}


1 commentaires

C'est pourquoi je suis à l'aide de l'accessoire "Onchange" parce que ce qui sélectionne ce n'est pas le seul. Je dois générer un identifiant unique pour chaque sélection ... Je vais mettre à jour la question



1
votes
(function () {

var previous;
$("#selectId").on('focus', function () {
    // Store the current value on focus and on change
    previous = this.value;
}).change(function () {

    // your logic to call ajax
    $.ajax({
        url: set_color_url,
        type: 'POST',
        data: {
            id: sel.value
        },
        success: function (response) {
            if (response.error) {
                // the color it`s changed
                $("#selectId").val(previous);
            } else {
                // Make sure the previous value is updated on successful ajax
                previous = this.value;
            }
        }
    });
  });
});

0 commentaires

0
votes

pour la prochaine fois que vous pouvez utiliser l'utilisateur () ou .child () et pour les précédents, vous pouvez utiliser prev () https://www.w3schools.com/jquery/jquery_ref_traversing.asp - Voir pour Étudier


0 commentaires