2010-10-24 23 views
0

Un problème avec l'change() event in jQuery:Comment obtenir la valeur de l'élément select et comment agir sur le changement?

$("select[name=cmm]").change(function(){ 
    total(); 
}); 

Pour une raison quelconque la fonction « totale » n'est pas appelé avec le code ci-dessus. Le code html est:

<select name="cmm"> 
     <option value="none">none</option> 
     <option value="one">the first</option> 
     <option value="two">the second</option> 
    </select> 

Est-ce que je me réfère à l'élément dans le mauvais sens ou quelque chose? Ou appeler la fonction dans le mauvais sens?


Mise à jour: La fonction d'alerte ici ne montre pas, donc je devine que l'événement change est jamais appelé ..

$(document).ready(function() { 
$("select[name=cms]").change(function(){ 
    total(); 
    alert($("select[name=cms]").length); 
}); 
}); 

(et oui, je l'ai utilisé doc- prêt tout le temps)

Répondre

2

Pour la question mise à jour:
Assurez-vous que votre code est en cours d'exécution dans un gestionnaire document.ready si l'élément est <select> dans la DOM et prêt, comme ceci:

$(function() { 
    $("select[name=cmm]").change(function(){ total(); }); 
}); 

Pour la question précédente:
Vous êtes absent le deuxième m sur votre sélecteur, il devrait être:

$("select[name=cmm]").change(function(){ total(); }); 

ou moins:

$("select[name=cmm]").change(total); 

Fo r le second, il suffit d'utiliser .val() directement sur la <select> pour obtenir la valeur, comme celui-ci:

var iets = $("select[name=cmm]").val(); 
//or when calling .change(total) like above, inside total you can use: 
var iets = $(this).val(); 

Lorsque vous spécifiez option il obtient la valeur de la première <option>, peu importe ce qui est sélectionné.

+0

Hey, désolé, je n'ai pas cette faute de frappe dans mon code, doit avoir mal tourné en le copiant ici.La méthode de notation courte est en train de casser d'autres codes JS pour moi (j'utilise un plugin pour styler le menu de sélection) – networkprofile

+0

@Sled - Si vous changez votre code lorsque vous posez la question, vous risquez d'avoir plus d'erreurs, comme celui ci-dessus, assurez-vous que votre code correspond. Si ce qui précède ne fonctionne pas, est-il exécuté dans un gestionnaire 'document.ready'? Est-ce que votre '