2010-12-07 30 views
9

Salut J'ai une liste de sélection liek donc:JQuery Obtenir utilisateur valeur sélectionnée dans la liste de sélection lors de l'utilisation par défaut select = y

<select id=cardtype name=cardtype> 
<option selected='y' value="debit-0.00-50.00">Debit1</option> 
<option value="debit-0.00-50.00">Debit2</option> 
<option value="debit-0.00-50.00">Debit3</option> 
<option value="Credit-1.00-50.00">CreditCard</option> 
</select> 

j'ai essayé une différentes méthodes JQuery pour obtenir la valeur de l'utilisateur sélectionné valeur: var card = $ ('# cardType'). val(); var card = $ ('# cardType: selected'). Val(); etc etc

Cependant, ils renvoient tous juste la valeur de l'option par défaut sélectionnée:

<option selected='y' value="debit-0.00-50.00">Debit1</option> 

Est-ce que quelqu'un sait d'une façon d'obtenir la valeur de l'option choisie par l'utilisateur sélectionne plutôt que la valeur par défaut sélectionnée?

EDIT pour clarifier la JQuery est exécuté lorsqu'un utilisateur frappe un lien comme ceci:

<label for="paymentAmount">Amount (minimum payment <a class="minPay" href="">£<span id="dueFrom">50.00</span></a>) <span class="instructions"><span class="mandatory">*</span></span></label> 

avec le jquery suivant:

$("a.minPay").click(function(event) { 
      event.preventDefault(); 
      $("#paymentAmount").val($("#dueFrom").html()); 
      var from = parseFloat($("#paymentAmount").val()); 
      var card = $('#cardType').val(); 
    }); 

Cela ne peut pas fonctionner si l'utilisateur de sélectionner une option dans la liste de sélection .. et je veux l'option de valeur pas le texte :)

Répondre

18

Assurez-vous que vous obtenez avec le bon id et au bon moment, c'est la bonne méthode:

$('#cardtype').val(); 

Notez que le id est cardtype, pas cardType, il est sensible à la casse. Aussi, vous devez vous assurer que vous êtes en cours d'exécution après que après l'utilisateur a sélectionné une valeur, par exemple:

$('#cardtype').change(function() { 
    alert($(this).val()); 
}); 

You can test it out here. Notez également que vos attributs doivent toujours être être cité.

+0

Salut merci pour la réponse rapide! :) Cependant, l'identifiant est correct (j'ai oublié de mettre le 't' dans le message) cette fonction est exécutée lorsque l'utilisateur clique sur un lien, pas lorsque la liste de sélection est modifiée. – Arazmus

+0

Salut Nick, Après avoir utilisé ce yool (qui est très gentil :)) j'ai trouvé que mon code fonctionne bien là .. cependant dans mon application il ne le fait pas et je me demande si c'est parce que la liste de sélection est générée dynamiquement via AJAX, Bien que je ne vois pas pourquoi cela ferait une différence .. – Arazmus

1

Vous devez vous assurer que vos identifiants sont les mêmes (votre code et HTML ont des cas différents);

$('#cardtype').val(); vous obtiendrez la valeur sélectionnée comme indiqué ici: http://jsfiddle.net/jonathon/8hvRa/

Un autre point est que toutes les valeurs de votre carte de débit sont les mêmes. val obtient la valeur de l'option, pas le texte.

+0

Salut Jonathon, je suis après la valeur de l'option pas le texte, le html ci-dessus est juste un exemple, dans l'application réelle chaque option a un texte différent et des valeurs différentes – Arazmus