Bonjour,

J'aimerais savoir comment supprimer les attribues select="selected" sur les options d'un select.
Donc en fait je genere une liste en php :

<select id="select-team" class="form-control dual_select" name="team[]" multiple>
    <?php foreach($employes as $e):?>
        <option value="<?php echo $e->reference.'-'.$e->company;?>">
            <?php echo $e->reference.' | '.$e->lastname.' '.$e->firstname;?>
        </option>
    <?php endforeach;?>
</select>

Cette liste récupère tout les users
Je récupère les users qui son enregistré dans une autre table et pour ceux là j'applique l'attribue select="selected"

var inputsite = document.getElementById("team_site");
    $.ajax({
        url: "/planning/salarie-type",
        data: '&site=' + site,
        dataType: 'json',
        success: function (json) {
            $('#team').modal('show');
            inputsite.value = "";
            inputsite.value = site;
            for (var x = 0; x < json.length; x++) {
                var key = json[x].reference+'-'+json[x].company;
                console.log(key);
                $('#select-team option[value="'+key+'"]').prop('selected', true);
            }
        },
        error: function (json) {
            console.log(json);
        }

Le problème avec ce code c'est que j'ai une certaine architecture
Pour Activité 1->
j'ai un site 1->
là j'ai un select
j'ai un site 2->
là j'ai un select.....
du coup si je vais sur mon select du site 1 j'ai bien les users enregistré, mais si je vais sur le le select du site 2 j'ai les users du 1 et 2.
Donc je pense qu'il faut utiliser :

.prop('selected', false);

mais je ne sais pas comment m'y prendre
Je ferais
pour toutes les options, si option.value pas égale à key alors je retire selected
Bref j'espere que vous comprenez mon problème

3 réponses


Salut,

Essaye avec .removeAttr('selected') ;)

cid5420
Auteur

oui a quel moment dans mon code ? Il faut également que je fasse une boucle pour le faire sur toute les option du select !

hello,
j'ai pas toutes les billes et il n'y a certainement pas tout le code js qui gère ton select mais :

  • tu récupères un json : tu n'as pas besoin de le parser avant de l'utiliser ?
  • si tu changes de "site" en ajax il faut (comme le dit @betaWeb) déselectionner tes options avant la mise à jour cad ici
    success: function (json) {
            $('#select-team option').removeAttr('selected');
            $('#team').modal('show');
            ...

    ou même avant ton call Ajax, ainsi même si ton appel n'aboutit pas tu auras ton select à zéro...

sinon (et c ce qui semble se passer) tu ne fais que rajouter des couches de selected