Avatar billede MacMadsen Novice
01. maj 2018 - 11:13 Der er 2 kommentarer

Ændre text baseret på input (data parameter)

Hej Eksperter,

Jeg skal have ændret noget HTML, baseret på hvilken option der bliver valgt i en Dropdown menu.

Så nedenunder dropdown menuen, er der en Div med noget tekst, hvor at prisen skal ændre sig, afhængig af hvad der bliver valgt i dropdown menuen.

Den eneste måde jeg kan identificere det valgte på i dropdown, er via et data-attribute.

Jeg er i tvivl om hvordan jeg får ændret teksten. Nedenfor er min foreløbige kode, som jeg ikke kan få til at fungere.

<div class="selectric-scroll">
    <ul>
        <li data-index="0" class="disabled">Dækning *</li>
        <li data-index="1" class="selected highlighted">Ulykkesforsikring</li>
        <li data-index="2" class="last">Sygdomsforsikring</li>
    </ul>
</div>
<div id="showPrice"> [Pris skal stå her, afhængig af hvad der er valgt] </div>

<script>
document.querySelector("[data-index]").addEventListener("change", myFunction() {
    if([data-index] === 1) {
        document.getElementById("showPrice").innerHTML = "1000 kr."
    } else if ([data-index] === 2) {
        document.getElementById("showPrice").innerHTML = "2000 kr."
    } else () {
        document.getElementById("showPrice").innerHTML = "0 kr."
    }
});


Håber i kan hjælpe. På forhånd mange tak!
Avatar billede Slater Ekspert
01. maj 2018 - 11:55 #1
Jeg går ud fra du bruger jQuery Selectric plugin, ud fra klassenavnet på div'en. Det er ellers vigtigt at nævne.
Ifølge dokumentationen for det plugin, kan du ikke bruge "change" eventen, men skal bruge det specielle "selectric-change" event til det. Og så skal det aldrig sættes på de enkelte valgmuligheder, men på elementet der er drop-downen selv, hvad end det er en <select> eller i dette tilfælde en Selectric.

Hvis elementet her er .selectric-scroll, så skal du altså køre det på
$('.selectric-scroll').on('selectric-change', function() { ... })

Og hvorfor ikke sætte værdien direkte i dine data attributes, i stedet for et index som du oversætter til en værdi senere?
Avatar billede olsensweb.dk Ekspert
01. maj 2018 - 17:52 #2
@MacMadsen
>Den eneste måde jeg kan identificere det valgte på i dropdown, er via et data-attribute.
hva er der galt i at bruge data attributten ?? (udover det er HTML5, der ikke er understøttet af ældre browsere, men kan løses med et js)

det kan laves så simpelt
<!DOCTYPE html>
<html lang="da">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
<title>demo</title>

<style type="text/css">
</style>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
<script type="text/javascript">
// JavaScript using jQuery
$(function(){
    $('#biler').change(function(){
      var selected = $(this).find('option:selected');
      var pris = selected.data('pris');
        $('#showPrice').html(pris);     
    });
});
</script>
</head>
<body>


<select id="biler">
  <option value="volvo" data-pris="200000">Volvo</option>
  <option value="saab" data-pris="100000">Saab</option>
  <option value="mercedes" data-pris="300000">Mercedes</option>
  <option value="audi" data-pris="500000">Audi</option>
</select>
<div id="showPrice"> [Pris skal stå her, afhængig af hvad der er valgt] </div>
</body>
</html>



https://stackoverflow.com/questions/4564659/adding-additional-data-to-select-options-using-jquery
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester