attribue selected

Par cid5420, il y a 9 ans


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

betaWeb, il y a 9 ans

Salut,

Essaye avec .removeAttr('selected') ;)

cid5420, il y a 9 ans

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

saibe, il y a 9 ans

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