2009-11-02 8 views
3

traditionnellement nous écrivonsvaleur obtenir jQuery à partir d'un menu déroulant choisi

var value = $("#drop-down-id").val(); 

pour obtenir la valeur. Dans mon cas, certaines des options contient plusieurs mots avec des espaces comme "Autoriser tout", "Utilisateurs Internet" etc. Ce que j'obtiens en VALUE est seulement "Autoriser" qui est, jquery est en train de couper les mots après le blanc espace. Y a-t-il un autre moyen de résoudre ce problème?

+1

Il peut être utile d'inclure le code HTML pour votre liste déroulante, en indiquant également les valeurs exactes. – spaetzel

Répondre

9

Si vous avez la valeur enveloppé dans le <option></option> et vous n'utilisez pas le val attribut directement, vous pouvez faire:

var value = $('#drop-down-id option:selected').text(); 
+0

Merci pour la réponse, votre solution a fonctionné :) – uday

+1

Peut-être travaillé pour vous, mais s'il vous plaît connaître la différence. l'attribut text() obtient ce que DropDownList affiche actuellement, tandis que l'attribut val() est la valeur "behind".

+0

C'est un très bon point .. J'ai vérifié dans firebug, la "valeur" avait été réduite à un mot. Ainsi, le .text fonctionnait et non le .value(). Fondamentalement, je le peuple dynamiquement à partir d'un objet json. Faudra vérifier. Merci quand même! – uday

6

essayer avec:

var value = $("#drop-down-id option:selected").attr("value"); 
+0

Merci pour la réponse, mais cela n'a pas fonctionné. – uday

1

Cela n'a aucun sens. Il ne devrait pas être nécessaire d'obtenir le texte d'option. Si vous avez besoin de le faire, vos éléments d'option sont probablement mal configurés du côté serveur.

Vérifiez la source HTML, vous avez probablement oublié les guillemets autour de l'attribut de valeur de l'option.

Celui-ci est mal:

<option value=John Doe>John Doe</option> 

Il ne reviendrait le premier mot que la valeur réellement choisie, parce que l'espace est en fait un séparateur d'attribut HTML; maintenant vous aurez "John" comme valeur et le "Doe" est vu comme un autre attribut HTML (inexistant).

Celui-ci est correct

<option value="John Doe">John Doe</option> 

De cette façon, vous obtenez "John Doe" en tant que valeur.