Comment puis-je obtenir l'option dans une liste déroulante basée sur la valeur sélectionnée? Essentiellement, je veux obtenir l'option qui est sélectionnée, puis changer le innerHTML.
Voici ce que j'ai jusqu'à présent ..
$('[id*=DropDownOutfall]').val()
Je suis en mesure d'obtenir le valeur de l'option sélectionnée mais j'ai besoin de l'élément option afin de pouvoir mettre à jour le fichier innerHTML.
<select name="ctl00$MainContent$DropDownOutfall" onchange="CheckValueSelected();setTimeout('__doPostBack(\'ctl00$MainContent$DropDownOutfall\',\'\')', 0)" id="DropDownOutfall" class="form-control" style=""> <option selected="selected" value="-1"></option> <option value="OUTFALL 001">OUTFALL 001</option> <option value="OUTFALL 002">OUTFALL 002</option> <option value="OUTFALL 004">OUTFALL 004</option> <option value="OUTFALL 005">OUTFALL 005</option> </select>
4 Réponses :
$('#DropDownOutfall').change(function() { var selectedValue = $('#DropDownOutfall').val(); var selectedOption = $('#DropDownOutfall option[value="' + selectedValue + '"]'); selectedOption.val("option value");//Changes actual value selectedOption.html("option value");//Changes value text });
Ici, cela sera sélectionné.
Ajout d'un changement de texte pour la démo.
REMARQUE: J'ai supprimé le __doPostBack dans le onChange car il n'existe pas dans l'extrait de code.
<select name="ctl00$MainContent$DropDownOutfall" onchange="CheckValueSelected();" id="DropDownOutfall" class="form-control" style=""> <option selected="selected" value="-1"></option> <option value="OUTFALL 001">OUTFALL 001</option> <option value="OUTFALL 002">OUTFALL 002</option> <option value="OUTFALL 004">OUTFALL 004</option> <option value="OUTFALL 005">OUTFALL 005</option> </select>
function CheckValueSelected() { document.querySelector('#DropDownOutfall option:checked').text += ' - test'; }
Ajouté celui-ci car Louys est correct, le sélecteur CSS peut vous amener directement à l'élément.
Bon cal Louys! .
<select name="ctl00$MainContent$DropDownOutfall" onchange="CheckValueSelected();" id="DropDownOutfall" class="form-control" style=""> <option selected="selected" value="-1"></option> <option value="OUTFALL 001">OUTFALL 001</option> <option value="OUTFALL 002">OUTFALL 002</option> <option value="OUTFALL 004">OUTFALL 004</option> <option value="OUTFALL 005">OUTFALL 005</option> </select>
function CheckValueSelected() { let sel = document.querySelector('#DropDownOutfall'); let opt = sel.options[sel.selectedIndex]; opt.text += 'Test Change'; console.log(opt); }
Voici une façon, en JS vanille
<select onchange="CheckValueSelected(this)" data-current-selection="" id="DropDownOutfall" class="form-control"> <option selected="selected" value="-1">- Select an option -</option> <option value="OUTFALL 001">OUTFALL 001</option> <option value="OUTFALL 002">OUTFALL 002</option> <option value="OUTFALL 004">OUTFALL 004</option> <option value="OUTFALL 005">OUTFALL 005</option> </select>
CheckValueSelected = _this => { const { currentSelection } = _this.dataset; if (currentSelection !== '') { _this.querySelector(`[value="${currentSelection}"]`).innerText = currentSelection; } const target = _this.querySelector('option:checked'); _this.dataset.currentSelection = target.value; target.innerText += ' selected'; }
EDIT 1:
Approche plus dynamique, qui utilise le moins de sélecteurs.
EDIT 2:
Exemple plus complet avec ajout / suppression de sélections innerText et suivi des états précédents à l'aide d'un attribut de données data-current-selection=""
.
<select onchange="CheckValueSelected()" id="DropDownOutfall" class="form-control" style=""> <option selected="selected" value="-1">- Select an option -</option> <option value="OUTFALL 001">OUTFALL 001</option> <option value="OUTFALL 002">OUTFALL 002</option> <option value="OUTFALL 004">OUTFALL 004</option> <option value="OUTFALL 005">OUTFALL 005</option> </select>
CheckValueSelected = () => { const selVal = document.getElementById('DropDownOutfall'); console.log(selVal.querySelector(`[value="${selVal.value}"]`)); }
Tout d'abord, utilisez simplement id
: $ ('# DropDownOutfall')
pour rechercher l'élément .
Ensuite , pour obtenir l'option sélectionnée, utilisez .find ()
et appliquez .html ()
(ou .text ()
) dessus.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <select name="ctl00$MainContent$DropDownOutfall" id="DropDownOutfall" class="form-control" style=""> <option selected="selected" value="-1"></option> <option value="OUTFALL 001">OUTFALL 001</option> <option value="OUTFALL 002">OUTFALL 002</option> <option value="OUTFALL 004">OUTFALL 004</option> <option value="OUTFALL 005">OUTFALL 005</option> </select>
$('#DropDownOutfall').on('change',function(){ $(this).find('option:selected').html('Hello world'); });
Et pourquoi pas simplement
$ ('# DropDownOutfall'). Val ()
?que juste la valeur de l'option. Je veux prendre cette option et mettre à jour le innerHTML de celui-ci @LouysPatriceBessette