Jquery obtenir l'entrée de la matrice de champ
J'ai trouvé les mêmes questions ici, mais rien ne fonctionne pour moi.
ont des entrées comme:
<input type="text" value="2" name="pages_title[1]">
<input type="text" value="1" name="pages_title[2]">
essayer d'obtenir ces domaines comme:
$('input[name="pages_title[]"]')
mais ont des résultats vides 🙁
comment obtenir tous les domaines?
Je ne peux faire comme $('input[name="pages_title[1]"]')
- double possible de sélecteur jQuery pour les entrées avec des crochets dans le nom de l'attribut
- Ah, mal lu la question. Vote serré qui est faux...besoin d'utiliser commence avec le sélecteur.
- comment commencer avec de l'aide pour obtenir chacun d'eux?
- J'ai fait un simple plugin qui permettra de générer de manière récursive un objet JSON représentation de ces "multidimensionnel champs de saisie": codepen.io/alexweissman/stylo/MyWZdN
Vous devez vous connecter pour publier un commentaire.
Utiliser le commence avec le sélecteur
jsfiddle exemple
Remarque: En accord avec @epascarello que la meilleure solution est d'ajouter une classe pour les éléments de référence et de la classe.
ce on travaille sur les Cases à cocher et des boutons Radio...
mais, chaque nom doit être le même.
qui est "censé" pour vous tous les champs de valeurs séparées par des virgules.
jamais essayé avec des zones de texte, de sorte cant le garantir.
comme @John a commenté:
pour itérer sur eux.
$('input[name="pages_title[]"]').each(function() { var aValue = $(this).val(); });
EDIT:
Pas toujours, vous devez simplement répondre à l'OP questions, vous avez parfois besoin de leur enseigner de meilleures méthodes. (désolé si cela semble Arrogant)
COMMENTAIRE:
la définition des entrées
est la rupture de la matrice, chaque entrée a un nom unique, à cet effet, il n'est pas un tableau plus.
$('input[name="pages_title[]"]').each(function() { var aValue = $(this).val(); });
[1]
,[2]
,[3]
, qui est le point.[1]
représenterait un tableau différent alors[2]
la carte d'utilisation de la méthode, nous pouvons obtenir l'entrée des valeurs stockées dans le tableau.
Vous devez utiliser le commence avec le sélecteur
Mais la meilleure solution est d'ajouter une classe pour les éléments de référence et de la classe. La raison, c'est une plus vite chercher.
name="pages_titles"
? aussi, pourquoi utiliser une classe, lors de son claire de laname
devrait être le même? supplémentaire de balisage pour le plaisir?^=
est beaucoup plus lent qu'un sélecteur de classe. Il doit analyser les cordes et les vérifier pour un match. Et je n'ai aucune idée de ce que tu veux dire avec lename="pages_titles"
pages_titles
(au lieu depages_title
). je suis d'accord qu'il devrait réduire il sélecteur à quelque chose comme#divId[name='pages_title']
mais pourquoi l'ajout d'une classe? la différence serait si peu, il ne sera pas remarqué.add class
solution, il n'obtiendra pas de résultats sur le côté serveur.Mettre le nom de l'entrée entre guillemets simples de sorte que les supports
[]
sont traités comme des chaînesVous pouvez donner à vos zones de saisie de texte les noms de classe, comme suit:
et l'itération de la sorte:
Je pense que le meilleur moyen est d'utiliser un Propper la Forme et l'utilisation jQuery.serializeArray.
Les Valeurs sont disponibles en PHP comme
$_POST['field'][INDEX]
.Vous pouvez échapper à crochets avec doubles barres obliques inverses comme ceci:
$('input[name="pages_title\\[\\]"]')
Vous pouvez utiliser le contenir sélecteur:
Afin de sélectionner un élément par attribut ayant une caractéristique spécifique, vous pouvez créer une nouvelle liste de sélection comme dans le fragment de code suivant à l'aide d'une expression régulière pattern. L'utilisation de regex qui est destiné à rendre flexible le nouveau sélecteur autant que possible:
JS:
HTML:
Une autre solution peut être basée sur:
JS:
HTML: