2009-12-23 11 views
26

Je le menu déroulant suivant:détecter lorsqu'un <option> spécifique est sélectionné avec jQuery

<select name='type' id='type'> 
    <option id='trade_buy' value='1' selected='selected'>Buy</option> 
    <option id='trade_buy_max' value='1'>Buy max</option> 
    <option id='trade_sell' value='2'>Sell</option> 
    <option id='trade_sell_max' value='2'>Sell max</option> 
</select> 

Je voudrais jQuery pour détecter lorsque l'option avec l'identifiant trade_buy_max est sélectionné.

J'ai essayé ce qui suit, mais cela ne semble pas fonctionner.

$(document).ready(function() { 

    $("option#trade_buy_max").select(function() { 

     //do something 

    }); 
}); 

Des idées?

Merci d'avance.

Répondre

40

Cela fonctionne ... Écoutez l'événement de changement sur la boîte de sélection pour tirer et une fois qu'il le fait, tirez simplement l'attribut id de l'option sélectionnée.

$("#type").change(function(){ 
    var id = $(this).find("option:selected").attr("id"); 

    switch (id){ 
    case "trade_buy_max": 
     // do something here 
     break; 
    } 
}); 
+0

Puisque mes valeurs d'options étaient uniques, je pourrais utiliser ceci: var val = $ ('# select_xyz'). Val(); Et l'erreur que je faisais avant de voir ce post - J'utilisais click (..) alors que j'aurais dû utiliser .change (..). Merci! – gnB

0

changement .select à .Modification et de l'espace mis avant #

4

vous pouvez lier change événement sur sa sélection à la place, puis vérifiez si l'option sélectionnée

$("select#type").change(function() { 
    if($("option#trade_buy_max:selected").length) 
    { 
    // do something here 
    } 
}); 
+0

+1 pour le code concis – iwasrobbed

9

Ce que vous devez faire est d'ajouter un onchange gestionnaire à la select:

$('#type').change(function(){ 
    if($(this).val() == 2){ 
    /* Do Something */ 
    } 
}); 
+0

Je vous en serais reconnaissant de savoir - pourquoi ce vote vers le bas? –

+0

C'est la meilleure façon de le faire. –

+0

Une solution très astucieuse. – super11

1
$("option#trade_buy_max").change(function() { 
    opt = $(this).children("option:selected").attr('id'); 
    if(opt == '#trade_sell_max'){ 
     // do stuff 
    } 
}); 

Non testé, mais cela devrait fonctionner.

1

Utilisez l'événement change et obtenir l'attribut id de l'option sélectionnée:

$('#type').change(function() { 
    var selectedId = $('option:selected', this).attr('id'); 

    if (selectedId == "trade_buy_max") { 
    // do something 
    } 
});