2010-11-07 3 views
0

i avoir le code html suivant:obtenir un élément en JavaScript

<select name="drop1" id="Select1" size="4" multiple="multiple"> 
    <option value="1">item 1</option> 
    <option value="2">item 2</option> 
    <option value="3">item 3</option> 
    <option value="4">item 4</option> 
    <option value="0">All</option> 
</select> 

ce code est disponible dans un contrôle utilisateur, de sorte que son id change quand je lance l'application Web. comment puis-je obtenir les éléments sélectionnés de JavaScript sur un bouton cliquez sur?

+0

http://stackoverflow.com/search?q=clientid+javascript – mplungjan

Répondre

2

Si vous utilisez ASP.NET 4 vous pouvez définir ids statiques dans web.config:

<system.web> 
    <pages clientIDMode="Static"></pages> 
</system.web> 

cette façon, vous connaissez l'ID généré.

Si vous n'utilisez pas ASP.NET 4.0 est une alternative à déclarer une variable globale js:

<script type="text/javascript"> 
    // TODO: be careful here and make sure the DOM is loaded 
    var mySelect = document.getElementById('<%= Select1.ClientID %>'); 
</script> 

qui pourrait être utilisé plus tard pour manipuler la sélection.

+0

pour faire poursuivre en justice que le Dom est chargé je peux utiliser jquery $ (document) .ready() à droite? et je dois utiliser votre code dans mon usercontrol où se trouve le select? cela fonctionnera-t-il aussi si le select était dans un div? – wael

+1

Oh, vous utilisez jquery? Vous auriez dû le dire dans votre question. Oui, vous devez utiliser '$ (document) .ready' mais avec jquery vous pouvez également utiliser des sélecteurs CSS. Par exemple, donnez à votre DropDownList une classe CSS, puis: 'var selectedValue = $ ('. Myddl'). Val();'. Vous n'avez pas besoin de vous embêter avec des ids mutilés. –

+0

En plus du chargement du DOM, si vous placez votre script à la fin de la page juste avant le corps de clôture, vous n'avez plus besoin d'envelopper votre code dans une instruction '$ (document) .ready' car à ce moment-là il sera déjà chargé. –

0

En JavaScript plaine:

var value = document.getElementById('Select1').value; 
+0

L'identifiant est ** pas ** 'Select1'. ASP.NET mange des identifiants générés. –

0

Si vous ne pouvez pas utiliser .NET 4.0 pour contrôler les ID et que vous ne voulez pas ajouter des balises supplémentaires à la page, vous devez récupérer l'élément de contrôle à l'aide du ID client:

var ddl = document.getElementByID('<%= Select1.ClientID %>'); 

Edit: Si vous utilisez jquery, vous pouvez le faire si vous ne voulez pas ajouter une classe supplémentaire à votre DropDownList:

var value = $('#<%= Select1.ClientID %>').val(); 
0

Avec jquery.

$ ("sélectionnez [name = drop1]") val()

Questions connexes