Obtenir les valeurs à partir de multiples sélectionnez les cases avec le même nom? Y compris sa valeur avec jquery et php
J'ai cherché des réponses sur ici et n'ai rien trouvé qui peuvent m'aider afin que je vais demander ici. J'ai un formulaire avec plusieurs champs select:
<select name="acabados[]">
<option value="1">ABC</option>
<option value="2">DEF</option>
<option value="3">GHI</option>
</select>
<select name="acabados[]">
<option value="1">ABC</option>
<option value="2">DEF</option>
<option value="3">GHI</option>
</select>
Comme vous pouvez le voir, ils sont exactement de la même boîte de sélection. J'ai dit au client pour l'utilisation de sélectionner plusieurs, mais il veut de cette façon. L'utilisateur peut en ajouter autant que ces boîtes comme ils le désirent (de sorte qu'il pourrait être jusqu'à 20 activez les cases à la fois) et j'ai besoin d'obtenir la valeur (1 ou 2 ou 3) et le texte à l'intérieur de l'option. Il est alors un tableau que j'ai besoin de briser cause j'ai besoin d'ajouter de la valeur totale de la sélection de boîtes en php. Je pourrais utiliser jquery pour la collecte de valeurs ou de php, qui est toujours plus facile. Je vous remercie d'avance pour toute aide!!
$_POST["acabados"]
(PHP). Vous pourriez être en mesure d'utiliser jQuery si vous donnez à chaque sélectionnez un attribut id unique valeur.comment pouvez-vous générer ces listes de sélection? aussi, ce que me demandez-vous? comment gérer la acabados[] le vecteur? comment obtenir les valeurs de chaque case de sélection en jquery?
Non, il travaille en PHP. Voir la démo dans ma réponse.
Le format de la
select
éléments dans la question est correcte. L'ajout de []
à la fin du nom ajoute la valeur de l'élément à un tableau lors de la publication de PHP.Je suis corrigé ensuite. 🙂
OriginalL'auteur luv2code | 2012-01-19
Vous devez vous connecter pour publier un commentaire.
Essayer cela, il va travailler pour créé dynamiquement sélectionner les éléments de trop.
total
var contiendra le total de toutes les sélectionner les éléments de la valeur sélectionnée.for(var i = 0, len = $selects.length; i < len; i++) {}
s'exécute beaucoup plus rapidement que.each()
. Aussi,$.each()
courir plus vite que.each()
: jsperf.com/jquery-each-vs-for-loops/2 (il est assez incroyable de voir comment beaucoup plus rapide correctement formatéfor
boucle est). Événement délégation pourrait être bonne si nécessaire, mais si il n'est pas nécessaire, puis il crée une surcharge inutile avec tous les cas de bulles. Seulement des choses à garder à l'esprit.Pour créer dynamiquement des éléments c'est la manière d'aller, prendre l'aide de remontée d'événements. En même temps, il ne s'attache qu'à un gestionnaire d'événement n'importe quel nombre d'éléments.
Événement délégation est moins cher lors de la liaison (n'a qu'à se lier à un élément) mais il est plus cher lorsque les événements se déclenchent. Voici une jsperf j'ai fait pour démontrer la différence de performances entre la délégation et la liaison: jsperf.com/jquery-delegate-vs-bind-triggering/2
Oui je suis d'accord avec vous si c'est seulement pour un seul élément. Mais à l'OP du scénario, il peut être de 20 sélectionner des éléments de l'événement délégation de sens et d'ailleurs si les éléments sont ajoutés dynamiquement puis cette solution est la meilleure.
Le test de performance j'ai fait un lien à ne pas utiliser seulement 1 élément, il utilise près de 100 éléments (et chacun reçoit un événement qui se déclenche chaque boucle du test de performance). Avis de non-délégation effectue environ deux fois plus vite, dans cette situation, même si cela prend moins de temps pour se lier le gestionnaire d'événement à l'aide de la délégation). Comme je l'ai dit dans mon premier commentaire, en cas de délégation n'est pas intrinsèquement "mauvais", il a sa place, mais cette place est pour créer dynamiquement des éléments (où vous ne pouvez pas se lier aux éléments directement lorsqu'ils sont ajoutés dans les DOM).
OriginalL'auteur ShankarSangoli
Voici une démo: http://jsfiddle.net/aPXXA/1/
Vous pouvez modifier
var $select = $('select');
àvar $select = $('[name="acabados[]"]');
sélectionner uniquement lesselect
éléments avec laacabados[]
nom de l'attribut.OriginalL'auteur Jasper
Si vous voulez récupérer les valeurs en PHP, vous pouvez simplement utiliser
$_POST['acabados']
et il contiendra toutes les valeurs sélectionnées dans chaque menu. Voir une démo. Aussi longtemps que vous incluez la[]
après le nom, il sera composé tous les valeurs pour n'importe quel élément avec ce nom dans un seul tableau. Vous pouvez même mélange de sélectionner les menus, entrées, et textareas ensemble!OriginalL'auteur animuson
Pourquoi ne pas simplement leur donner des id différents et de faire le décompte en jquery/javascript. Sinon, leur donner à tous la même classe, et à faire .chacun() pour saisir les valeurs dans chacun d'eux.
OriginalL'auteur Zac