D'accord, dis que j'ai ceci:
<select id='list'>
<option value='1'>Option A</option>
<option value='2'>Option B</option>
<option value='3'>Option C</option>
</select>
À quoi ressemblerait le sélecteur si je souhaitais obtenir "Option B" lorsque la valeur "2" était sélectionnée?
Veuillez noter qu'il ne s'agit pas de demander comment obtenir la valeur textuelle sélectionnée, mais simplement l'une d'elles, sélectionnée ou non, en fonction de l'attribut value. J'ai essayé:
$("#list[value='2']").text();
Mais ça ne fonctionne pas.
Il recherche un élément avec id list
qui possède une propriété value
égal à 2. Ce que vous voulez, c'est l'enfant option
du list
.
$("#list option[value='2']").text()
Si vous souhaitez obtenir l’option avec une valeur de 2, utilisez
$("#list option[value='2']").text();
Si vous souhaitez obtenir l’option choisie, utilisez
$("#list option:selected").text();
Cela fonctionnait parfaitement pour moi. Je cherchais un moyen d’envoyer deux valeurs différentes avec les options générées par MySQL. Le texte suivant est générique et dynamique:
$(this).find("option:selected").text();
Comme mentionné dans l'un des commentaires. Avec cela, j'ai pu créer une fonction dynamique qui fonctionne avec toutes mes boîtes de sélection pour lesquelles je souhaite obtenir les deux valeurs, la valeur d'option et le texte.
Il y a quelques jours, j’ai remarqué que lors de la mise à jour de jQuery de 1,6 à 1,9 du site, j’utilisais ce code, cela ne fonctionnait plus ... était probablement un conflit avec un autre morceau de code ... de toute façon, la solution consistait à supprimer l’option du find () call:
$(this).find(":selected").text();
C’était ma solution ... ne l’utilisez que si vous rencontrez un problème après la mise à jour de votre jQuery.
Basé sur le code HTML original posté par Paolo, j’ai proposé ce qui suit.
$("#list").change(function() {
alert($(this).find("option:selected").text()+' clicked!');
});
Il a été testé pour fonctionner sur Internet Explorer et Firefox.
$("#list option:selected").each(function() {
alert($(this).text());
});
pour plusieurs valeurs sélectionnées dans l'élément #list
.
S'il n'y a qu'une seule étiquette de sélection sur la page, vous pouvez spécifier select à l'intérieur de l'id 'list'
jQuery("select option[value=2]").text();
Pour obtenir le texte sélectionné
jQuery("select option:selected").text();
Essayez ce qui suit:
$("#list option[value=2]").text();
La raison pour laquelle votre fragment de code original ne fonctionnait pas est que vos balises OPTION
sont des enfants de votre balise SELECT
, qui a le id
list
.
C’est une vieille question qui n’a pas été mise à jour depuis un certain temps. La bonne façon de le faire maintenant serait d’utiliser
$("#action").on('change',function() {
alert($(this).find("option:selected").text()+' clicked!');
});
J'espère que ça aide :-)
$(this).children(":selected").text()
Je voulais obtenir l'étiquette sélectionnée. Cela a fonctionné pour moi dans jQuery 1.5.1.
$("#list :selected").text();
Vous pouvez obtenir le texte de l’option sélectionnée en utilisant la fonction .text();
vous pouvez appeler la fonction comme ceci:
jQuery("select option:selected").text();
$("#list [value='2']").text();
laissez un espace après le sélecteur d'id.
Pendant que vous "parcouriez" des éléments de sélection créés dynamiquement avec un .each (fonction () ...): $("option:selected").text();
et $(this + " option:selected").text()
n'a pas renvoyé le texte de l'option sélectionnée - il était plutôt nul.
Mais la solution de Peter Mortensen a fonctionné:
$(this).find("option:selected").text();
Je ne sais pas pourquoi la méthode habituelle ne réussit pas dans une .each()
(probablement ma propre erreur), mais merci, Peter. Je sais que ce n'était pas la question initiale, mais je le mentionne "pour les débutants qui passent par Google".
J'aurais commencé avec $('#list option:selected").each()
sauf que je devais également récupérer des éléments de l'élément select.
Utilisation:
function selected_state(){
jQuery("#list option").each(function(){
if(jQuery(this).val() == "2"){
jQuery(this).attr("selected","selected");
return false;
}
});
}
jQuery(document).ready(function(){
selected_state();
});
Je cherchais à obtenir val par nom de champ interne au lieu de ID et je venais de Google pour cet article qui m'aidait, mais je n'ai pas trouvé la solution dont j'ai besoin, mais j'ai la solution et la voici:
Cela pourrait donc aider quelqu'un à rechercher une valeur sélectionnée avec un nom interne de champ au lieu d'utiliser un long identifiant pour les listes SharePoint:
var e = $('select[title="IntenalFieldName"] option:selected').text();
J'avais besoin de cette réponse car je m'occupais d'un objet à la distribution dynamique, et les autres méthodes présentées ici ne semblaient pas fonctionner:
element.options[element.selectedIndex].text
Ceci utilise bien sûr l'objet DOM au lieu d'analyser son code HTML avec nodeValue, childNodes, etc.
Un conseil: vous pouvez utiliser le code ci-dessous si votre valeur est dynamique:
$("#list option[value='"+aDynamicValue+"']").text();
Ou (meilleur style)
$("#list option").filter(function() {
return this.value === aDynamicValue;
}).text();
Comme mentionné dans jQuery obtient un texte de balise d'option spécifique et place une variable dynamique à la valeur
Comme solution alternative, vous pouvez également utiliser un partie du contexte du sélecteur jQuery pour rechercher le ou les éléments <option>
avec value="2"
dans la liste déroulante:
$("option[value='2']", "#list").text();
Je voulais une version dynamique pour select multiple qui afficherait ce qui est sélectionné à droite (j'aimerais lire et voir _ $(this).find
... plus tôt):
<script type="text/javascript">
$(document).ready(function(){
$("select[showChoices]").each(function(){
$(this).after("<span id='spn"+$(this).attr('id')+"' style='border:1px solid black;width:100px;float:left;white-space:nowrap;'> </span>");
doShowSelected($(this).attr('id'));//shows initial selections
}).change(function(){
doShowSelected($(this).attr('id'));//as user makes new selections
});
});
function doShowSelected(inId){
var aryVals=$("#"+inId).val();
var selText="";
for(var i=0; i<aryVals.length; i++){
var o="#"+inId+" option[value='"+aryVals[i]+"']";
selText+=$(o).text()+"<br>";
}
$("#spn"+inId).html(selText);
}
</script>
<select style="float:left;" multiple="true" id="mySelect" name="mySelect" showChoices="true">
<option selected="selected" value=1>opt 1</option>
<option selected="selected" value=2>opt 2</option>
<option value=3>opt 3</option>
<option value=4>opt 4</option>
</select>
Vous pouvez obtenir l'un des moyens suivants
$("#list").find('option').filter('[value=2]').text()
$("#list").find('option[value=2]').text()
$("#list").children('option[value=2]').text()
$("#list option[value='2']").text()
$(function(){
console.log($("#list").find('option').filter('[value=2]').text());
console.log($("#list").find('option[value=2]').text());
console.log($("#list").children('option[value=2]').text());
console.log($("#list option[value='2']").text());
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<select id='list'>
<option value='1'>Option A</option>
<option value='2'>Option B</option>
<option value='3'>Option C</option>
</select>
Si vous voulez obtenir la valeur sélectionnée, alors:
$("#list option:selected").text();