2010-07-07 3 views
1

J'ai quelque chose comme ceci:jQuery - valeur d'entrée cachée à partir des entrées de sélection

<select class="bla"> 
    <option value="1">...</option> 
    <option value="2">...</option> 
</select> 

<select class="bla"> 
    <option value="1">...</option> 
    <option value="2">...</option> 
</select> 

<select class="bla"> 
    <option value="1">...</option> 
    <option value="2">...</option> 
</select> 

<input class="alloptions" type="hidden" value=""> 

Je veux la valeur du champ d'entrée cachée pour changer chaque fois une autre option est sélectionnée dans chacun des champs d'entrée de sélection ci-dessus. Cette valeur contiendrait les options sélectionnées dans tous les champs de saisie séparés par des virgules.

Comment est-ce que je peux faire ceci?

+0

Vous trouverez cela beaucoup plus facile (et plus rapide pour démarrer) si vous avez utilisé des identifiants plutôt que des classes. –

+0

* Je veux que la valeur du champ de saisie masqué change à chaque fois qu'une option différente est sélectionnée dans chacun des champs de saisie sélectionnés ci-dessus. * Je ne pense pas que vous le fassiez. quel problème essayez-vous de résoudre? –

+0

bien j'ai besoin d'une certaine option à l'intérieur d'un widget wordpress. le problème est que cette option doit être un tableau, j'ai donc besoin d'un champ de saisie qui simule le tableau en prenant toutes les valeurs sélectionnées séparées par des virgules. puis dans le backend j'utilise exploser pour créer un tableau à partir de cette chaîne. – Alex

Répondre

4

Quelque chose comme:

$('select.bla').change(function() { 
    $value = $('select.bla').map(function(){return $(this).val()}).get().join(','); 
    $('input.alloptions').val($value); 
}); 

Explication:

  • change() est congédié chaque fois que la valeur d'un champ de sélection change
  • Avec map() nous créons un tableau des valeurs des select champs et join à une chaîne séparée par des virgules
+0

merci! cela fonctionne: D – Alex

+0

Merci, ça m'aide beaucoup !! –

0

La méthode .serialize() peut agir sur un objet jQuery qui a sélectionné des éléments de formulaire individuels, tels que « entrée », « textarea » et « select » - ce qui signifie que vous pouvez faire ce qui suit:

$('.bla').change(function(){ 
    var opts = $('select').serialize(); 
    $('.alloptions').val(opts); 
}); 
Chaque

"select" aurait besoin d'une valeur de nom et produirait:

selec1 = 1 = 2 & select2 & Sélection3 = 1

0

avez-vous vraiment besoin d'utiliser Javascript pour cela? Si vous attribuez aux trois zones de sélection le même attribut "nom", les valeurs seront envoyées au serveur sous la forme d'une liste délimitée par des virgules. Assurez-vous de faire un découpage de chaque élément lorsque vous faites une division, car certains navigateurs placeront des espaces après les virgules.

Questions connexes