Obtenir de l'élément précédemment sélectionné dans la boîte de sélectionner avec jQuery
J'ai un seul élément HTML de sélectionner la zone sur laquelle je voudrais savoir le quel élément a été sélectionné juste avant de changer de sélection pour le nouvel élément.
Par le moment de l'événement est déclenché, il est déjà trop tard:
$("select").change(function () {
var str = "";
$("select option:selected").each(function () {
//this will get me the current selected item (the new one)
str += $(this).text() + " "; });
})
Les docs disent que " Le changement événement se déclenche lorsqu'un contrôle perd le focus d'entrée et sa valeur a été modifiée depuis l'accès à l'accent.'
Cependant, le piégeage de la "brouiller" l'événement ne semble pas être le cas et il n'y a pas de "onFocusLost" type d'événement..
Est-ce réalisable dans un croix-navigateur compatible sans beaucoup de cerceau de saut d'obstacles?
OriginalL'auteur Alexi Groove | 2009-12-04
Vous devez vous connecter pour publier un commentaire.
Cela doit capturer la valeur avant qu'elle change. La valeur sera saisi dès que l'utilisateur ouvre le menu sélectionner, mais avant de sélectionner quelque chose.
Ne fonctionne pas si vous changez plusieurs fois. De cette façon, l'accent est appelée une fois, mais le changement de l'événement plusieurs fois et vous obtenez la valeur initiale, pas de précédent. (Sur Google Chrome)
OriginalL'auteur Greg W
Juste une pensée, mais ne pouvez pas vous pas une fois que vous manipulez le changement de l'événement, définir la valeur d'une variable, alors la prochaine fois que vous manipuler, vous aurait que la valeur?
Oui, ce serait le cas. Vous devez obtenir l'état initial enregistré dans les variables lorsque le document est chargé.
OriginalL'auteur epitka
Vous pourriez faire quelque chose comme ce
OriginalL'auteur PetersenDidIt
Ici est une mise à jour de la solution à l'aide .sur
Cependant, pour ce que je voulais obtenir, le ci-dessus a été trop lâche, j'ai besoin de la valeur qui a été sélectionné sur la première page de sortie comme ci-dessus va me donner la valeur incorrecte après les modifications de l'utilisateur plus d'une fois avant de soumettre le formulaire de données.
Ma solution était d'ajouter un "précédent" de l'attribut à l'élément select renseignée avec la valeur de la sortie, puis changer sur un "succès" de l'Ajax lors de l'enregistrement:
Alors sur l'utilisateur en appuyant sur un bouton annuler sur une popup de confirmation ou de l'existence d'un Ajax d'erreur j'ai juste fait:
et si, au moment de l'Ajax "succès" de changer le "précédent" de l'attribut pour le nouveau enregistré avec succès la valeur:
Adapté pour un seul de forme de l'élément, mais j'ai exigé une adaptation où j'ai une liste de comptes, chacun avec un compte de réglage, sélectionnez menu qui déclenche un jQuery UI boîte de dialogue qui à son tour décrypte l'Appel Ajax pour enregistrer le réglage, Un seul formulaire masqué avec un ensemble de champs est rempli avec les valeurs de l'sélectionnez menu à l'aide de .on('change')
Ici est celui de la sélection de menus (ID Unique devrait normalement être utilisé, mais dans mon cas il y a un couple de côté de serveur raisons pourquoi je ne peux pas les utiliser ce temps donc autour de la combinaison de l'utilisation de l'attribut "rel" et "type", du même code enregistre les modifications apportées à différentes tables de base de données):
Parce qu'il y a 3 points dans le script où un échec peut se produire et un succès, il était logique de faire une fonction:
Voici le jQuery UI Dialog code:
OriginalL'auteur Marc Newton