Comment puis-je détecter en jQuery lorsque toute option dans une balise SELECT a été modifiée?
Par exemple [Pseudocode]: P>
$(document).ready(function() { $("#selectattribute").change(function() { alert('Handler for .change() called.'); }); });
6 Réponses :
$("select").change(function() {})
Vous devez regarder les docs pour JQuery Selectors $ ("SELECT") CODE> Sélectionnerait tous les balises
de JQRERY DOCS concernant le gestionnaire de changement :
$('.target').change(function() { alert('Handler for .change() called.'); });
Salut je l'ai vu et je l'ai mis en œuvre mais ce n'est pas en train de travailler ... voir mon poste édité
Il devrait fonctionner en fonction du code que vous avez publié dans votre édition. Voir le lien Fiddle par "Jon P" dans une autre réponse ici. Votre code posté fonctionne lorsque vous êtes isolé. Il est donc possible que vous ayez d'autres choses dans le reste de la page qui le gâche - vous devrez peut-être pouvoir afficher la page globale HTML. Utilisez-vous le nom d'identification plus d'une fois? Y a-t-il des erreurs JavaScript dans la console?
Votre code fonctionne dans Firefox à l'aide de la souris, voir Ce violon . P>
Cependant, l'utilisation du clavier est une question différente selon laquelle Ce rapport de bogue P>
Pour contourner ce problème, j'ai ajouté un gestionnaire de clé pour supprimer la mise au point de l'élément puis re-concentré, conformément à ce violon p>
Si l'événement de changement ne déclenche pas lors de l'utilisation de la souris, vérifiez les options rendues par votre code PHP. Recherchez des structures qui pourraient être «enfreignez» la balise Select. p>
... réponse assez solide. Félicitations.
Essayez BING:
$("#selectattribute").change( function() { alert('Handler for .change() called.'); } );
Peut-être qu'il y a une autre balise que l'identifiant est nommé "SelectAttribute" .L'I de la balise doit être unique.Si il y a plus d'un identifiant, JQuery utilisera le premier fondé. P>
On dirait que votre jQuery n'est pas chargée, vérifiez d'abord qu'il est chargé
//case if mini jQueryis not used replace with window.jQuery if (window.$) { console.debug('jQuery is loaded '); } else { console.debug('jQuery is not loaded '); }
Vous attachez un auditeur à l'élément Select pour l'événement de changement. Vous pouvez utiliser JQuery (ou n'importe laquelle d'un certain nombre de bibliothèques), ou quelques lignes de script ordinaire, ou d'un gestionnaire en ligne.
@ROBG: Vous ne devriez vraiment pas proposer en ligne-gestionnaire ...
Avez-vous essayé différents navigateurs?
@Saxoiier - Vous ne devriez vraiment pas exprimer des opinions dans un forum technique sans fournir des raisons techniques solides.
Pouvez-vous fournir le code une fois que celui-ci a été rendu par PHP
@ROBG: avec votre score élevé et la plupart des réponses marquées avec "JavaScript", vous devez savoir que vous ne devez pas mélanger HTML avec des JS en ligne et en ligne CSS car ces fichiers sont difficiles à maintenir (distinguer le contenu et la présentation visuelle). Vous pouvez le lire dans Beaucoup de réponses i>.
@Saxoiier - Je ne sais rien du genre. Je sais que pour considérer toutes les alternatives et leurs avantages et leurs inconvénients et ne pas suivre Dogma sans argument raisonné. Les gestionnaires en ligne ont de nombreux avantages, ils ne sont pas plus difficiles à entretenir que les attributs de données ou de classe. Les auditeurs ajout de manière dynamique ont également leurs problèmes et ne sont pas toujours la meilleure solution.
@ROBG: Oui, HTML 5 Attributs de données appartiennent également à ce contenu en ligne alors que les classes (et les identifiants) ne sont que des points d'ancrage et donc beaucoup plus faciles à gérer si elles sont correctement utilisées.
Je ne vois pas que le maintien d'un type de valeur d'attribut est différent de maintenir un autre type. Je ne dis pas «toujours utiliser des gestionnaires en ligne», je dis que ce sont une option raisonnable d'être examinée sur leurs mérites pour des cas particuliers, ils ne devraient pas être licenciés sans tenir compte de la prise en compte simplement parce qu'ils ne sont pas la hanche.