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