J'utilise généralement $("#id").val()
pour renvoyer la valeur de l'option sélectionnée, mais cette fois-ci cela ne fonctionne pas ... La balise sélectionnée a l'identifiant aioConceptName
.
Code HTML
<label>Name</label>
<input type="text" name="name" />
<select id="aioConceptName">
<option>choose io</option>
<option>roma</option>
<option>totti</option>
</select>
Pour les options de liste déroulante, vous voulez probablement quelque chose comme ceci:
var conceptName = $('#aioConceptName').find(":selected").text();
La raison pour laquelle val()
ne fait pas l'affaire est que cliquer sur une option ne modifie pas la valeur de la liste déroulante. Il ajoute simplement la propriété :selected
à l'option sélectionnée qui est un enfant de la liste déroulante.
Définissez les valeurs pour chacune des options
<select id="aioConceptName">
<option value="0">choose io</option>
<option value="1">roma</option>
<option value="2">totti</option>
</select>
$('#aioConceptName').val()
n'a pas fonctionné car .val()
renvoie l'attribut value
. Pour que cela fonctionne correctement, les attributs value
doivent être définis sur chaque <option>
.
Vous pouvez maintenant appeler $('#aioConceptName').val()
au lieu de tout ce :selected
voodoo suggéré par d’autres.
Je suis tombé sur cette question et ai développé une version plus concise de la réponse d'Elliot BOneville:
var conceptName = $('#aioConceptName :selected').text();
ou génériquement:
$('#id :pseudoclass')
Cela vous évite un appel jQuery supplémentaire, sélectionne tout d'un coup et est plus clair (à mon avis).
Essayez ceci pour la valeur ...
$("select#id_of_select_element option").filter(":selected").val();
ou ceci pour le texte ...
$("select#id_of_select_element option").filter(":selected").text();
Si vous êtes dans un contexte d'événement, dans jQuery, vous pouvez récupérer l'élément d'option sélectionné en utilisant:$(this).find('option:selected')
comme ceci:
$('dropdown_selector').change(function() {
//Use $option (with the "$") to see that the variable is a jQuery object
var $option = $(this).find('option:selected');
//Added with the EDIT
var value = $option.val();//to get content of "value" attrib
var text = $option.text();//to get <option>Text</option> content
});
Modifier
Comme mentionné par PossessWithin , Ma réponse répond simplement à la question: Comment sélectionner "Option" sélectionnée.
Ensuite, pour obtenir la valeur de l’option, utilisez option.val()
.
Avez-vous envisagé d'utiliser du vieux javascript?
var box = document.getElementById('aioConceptName');
conceptName = box.options[box.selectedIndex].text;
$('#aioConceptName option:selected').val();
Lecture de la valeur (pas du texte) d'une sélection:
var status = $("#Status").val();
var status = $("#Status")[0].value;
var status = $('#Status option:selected').val();
Comment désactiver une sélection? dans les deux variantes, la valeur peut être modifiée en utilisant:
UNE
L'utilisateur ne peut pas interagir avec la liste déroulante. Et il ne sait pas quelles autres options pourraient exister.
$('#Status').prop('disabled', true);
B
L'utilisateur peut voir les options dans la liste déroulante mais toutes sont désactivées:
$('#Status option').attr('disabled', true);
Dans ce cas, $("#Status").val()
ne fonctionnera que pour les versions jQuery inférieures à 1.9.0
. Toutes les autres variantes fonctionneront.
Comment mettre à jour une sélection désactivée?
De code derrière vous pouvez toujours mettre à jour la valeur dans votre sélection. Il est désactivé uniquement pour les utilisateurs:
$("#Status").val(2);
Dans certains cas, vous devrez peut-être déclencher des événements:
$("#Status").val(2).change();
<select id="form-s" multiple="multiple">
<option selected>city1</option>
<option selected value="c2">city2</option>
<option value="c3">city3</option>
</select>
<select id="aioConceptName">
<option value="s1" selected >choose io</option>
<option value="s2">roma </option>
<option value="s3">totti</option>
</select>
<select id="test">
<option value="s4">paloma</option>
<option value="s5" selected >foo</option>
<option value="s6">bar</option>
</select>
<script>
$('select').change(function() {
var a=$(':selected').text(); // "city1city2choose iofoo"
var b=$(':selected').val(); // "city1" - selects just first query !
//but..
var c=$(':selected').map(function(){ // ["city1","city2","choose io","foo"]
return $(this).text();
});
var d=$(':selected').map(function(){ // ["city1","c2","s1","s5"]
return $(this).val();
});
console.log(a,b,c,d);
});
</script>
Utilisez également la fonction jQuery.val()
pour sélectionner des éléments:
La méthode .val () est principalement utilisée pour obtenir les valeurs des éléments de formulaire tels que input, select et textarea. Dans le cas d'éléments sélectionnés, il retourne
null
quand aucune option n'est sélectionnée et un tableau contenant le valeur de chaque option sélectionnée quand il y en a au moins une et que c'est possible d'en sélectionner davantage car l'attributmultiple
est présent.
$(function() {
$("#aioConceptName").on("change", function() {
$("#debug").text($("#aioConceptName").val());
}).trigger("change");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<select id="aioConceptName">
<option>choose io</option>
<option>roma</option>
<option>totti</option>
</select>
<div id="debug"></div>
Avec jQuery, ajoutez simplement un événement change
et obtenez la valeur ou le texte sélectionné dans ce gestionnaire.
Si vous avez besoin de texte sélectionné, veuillez utiliser ce code:
$("#aioConceptName").change(function () {
alert($("#aioConceptName :selected").text())
});
Ou si vous avez besoin de la valeur sélectionnée, veuillez utiliser ce code:
$("#aioConceptName").change(function () {
alert($("#aioConceptName :selected").attr('value'))
});
vous devriez utiliser cette syntaxe:
var value = $('#Id :selected').val();
Alors essayez ce code:
var values = $('#aioConceptName :selected').val();
vous pouvez tester dans Fiddle: http://jsfiddle.net/PJT6r/9/
voir à propos de cette réponse dans cet article
Pour quiconque découvre que la meilleure réponse ne fonctionne pas.
Essayez d'utiliser:
$( "#aioConceptName option:selected" ).attr("value");
Cela fonctionne pour moi dans des projets récents, il est donc intéressant de le regarder.
Juste cela devrait fonctionner:
var conceptName = $('#aioConceptName').val();
J'espère que cela aide aussi à mieux comprendre et aide Essayez ceci ci-dessous, $('select[id="aioConceptName[]"] option:selected').each(function(key,value){
options2[$(this).val()] = $(this).text();
console.log(JSON.stringify(options2));
});
à plus de détails s'il vous plaît http://www.drtuts.com/get-value-multi-select-dropdown-without-value-attribute-using-jquery/
essayez celui-ci
$(document).ready(function() {
$("#name option").filter(function() {
return $(this).val() == $("#firstname").val();
}).attr('selected', true);
$("#name").live("change", function() {
$("#firstname").val($(this).find("option:selected").attr("value"));
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<select id="name" name="name">
<option value="">Please select...</option>
<option value="Elvis">Elvis</option>
<option value="Frank">Frank</option>
<option value="Jim">Jim</option>
</select>
<input type="text" id="firstname" name="firstname" value="Elvis" readonly="readonly">
Vous pouvez essayer de le déboguer de cette façon:
console.log($('#aioConceptName option:selected').val())
Si vous voulez saisir l'attribut 'valeur' au lieu du nœud de texte, cela fonctionnera pour vous:
var conceptName = $('#aioConceptName').find(":selected").attr('value');
Simple et assez facile:
Votre liste déroulante
<select id="aioConceptName">
<option>choose io</option>
<option>roma</option>
<option>totti</option>
</select>
Code Jquery pour obtenir la valeur sélectionnée
$('#aioConceptName').change(function() {
var $option = $(this).find('option:selected');
//Added with the EDIT
var value = $option.val(); //returns the value of the selected option.
var text = $option.text(); //returns the text of the selected option.
});
Généralement, vous devez non seulement obtenir la valeur sélectionnée, mais également exécuter une action. Alors, pourquoi ne pas éviter toute la magie de jQuery et simplement passer la valeur sélectionnée en tant qu’argument à l’appel d’action?
<select onchange="your_action(this.value)">
<option value='*'>All</option>
<option ... />
</select>
Vous pouvez utiliser $("#drpList").val();
Vous pouvez sélectionner l’option exacte choisie:
$("select#aioConceptName > option:selected").text()
Tandis que ci-dessous vous donnera une valeur.
$("select#aioConceptName > option:selected").val()
$('nameofDropDownList').prop('selectedIndex', whateverNumberasInt);
Imaginez le DDL comme un tableau avec des index, vous sélectionnez un index. Choisissez celui que vous souhaitez définir avec votre JS.
Pour obtenir valeur de la balise sélectionnée:
$('#id_Of_Parent_Selected_Tag').find(":selected").val();
Et si vous voulez obtenir text utilisez ce code:
$('#id_Of_Parent_Selected_Tag').find(":selected").text();
Par exemple => cette balise est sélectionnée:
<div id="id_Of_Parent_Selected_Tag">
<select >
<option value="1">CR7</option>
<option value="2">MESSI</option>
</select>
</div>
<script>
$('#id_Of_Parent_Selected_Tag').find(":selected").val();//OUTPUT:1 OR 2
$('#id_Of_Parent_Selected_Tag').find(":selected").text();//OUTPUT:CR7 OR MESSI
</script>
J'ai eu le même problème et j'ai compris pourquoi cela ne fonctionnait pas sur mon cas
La page html a été divisée en différents fragments html et j’ai constaté que j’avais un autre champ de saisie qui portait le même identifiant de select
, ce qui faisait que val()
était toujours vide
J'espère que cela sauvera la journée pour tous ceux qui ont le même problème.
pour récupérer une sélection avec le même nom de classe = nom, vous pouvez vérifier si une option de sélection est sélectionnée.
var bOK = true;
$('.optKategorien').each(function(index,el){
if($(el).find(":selected").text() == "") {
bOK = false;
}
});
pour utiliser $ ("# id"). val, vous devriez ajouter une valeur à l'option comme ceci:
<label>Name</label>
<input type="text" name="name" />
<select id="aioConceptName">
<option value="choose">choose io</option>
</select>
sinon, vous pouvez utiliser
$("#aioConceptName").find(':selected').text();
Je souhaite que cela aide ..