J’ai trouvé des questions similaires ici, mais rien ne fonctionne pour moi.
avoir des entrées comme:
en essayant d’obtenir ces champs comme:
$('input[name="pages_title[]"]')
mais ont des résultats vides 🙁
comment obtenir tous les champs? Je peux seulement l’obtenir comme $('input[name="pages_title[1]"]')
Utiliser les départs avec le sélecteur
$('input[name^="pages_title"]').each(function() { alert($(this).val()); });
exemple jsfiddle
Note: En accord avec @epascarello, la meilleure solution est d’append une classe aux éléments et de référencer cette classe.
Cela fonctionne normalement sur les cases à cocher et les boutons radio … mais chaque nom devrait être le même.
var x = $('input[name="pages_title[]"]').val();
c’est “supposé” pour vous procurer tous les champs en valeurs séparées par des virgules. jamais essayé avec des zones de texte, donc ne peut pas le garantir.
comme l’a commenté @John: itérer sur eux. $('input[name="pages_title[]"]').each(function() { var aValue = $(this).val(); });
EDIT: Pas toujours besoin de répondre aux questions du PO, parfois vous devez leur apprendre de meilleures méthodes. (désolé si cela sonne arrogant)
COMMENTAIRE: définir les entrées comme
casser le tableau, chaque entrée a un nom unique, par conséquent, ce n’est plus un tableau.
utiliser la méthode de la carte, nous pouvons obtenir des valeurs d’entrée stockées dans le tableau.
var values = $("input[name='pages_title[]']").map(function(){return $(this).val();}).get();
Vous devez utiliser les départs avec le sélecteur
var elems = $( "[name^='pages_title']" );
Mais une meilleure solution consiste à append une classe aux éléments et à référencer la classe. La raison en est que la recherche est plus rapide.
Placez le nom d’entrée entre guillemets simples pour que les crochets []
soient traités comme une chaîne
var multi_members=""; $("input[name='bayi[]']:checked:enabled").each(function() { multi_members=$(this).val()+","+multi_members; });
Vous pouvez donner à vos champs de saisie des noms de classes, comme ceci:
et itérer comme ça:
$('input.pages_title').each(function() { alert($(this).val()); });
Je pense que le meilleur moyen est d’utiliser un formulaire Propper et d’utiliser jQuery.serializeArray .
Les valeurs seront disponibles en PHP sous la forme $_POST['field'][INDEX]
.
Vous pouvez échapper aux crochets avec des doubles barres obliques inverses comme ceci:
$('input[name="pages_title\\[\\]"]')
Vous pouvez utiliser le sélecteur de contenir:
[nom * = “valeur”] : sélectionne les éléments qui ont l’atsortingbut spécifié avec une valeur contenant une sous-chaîne donnée.
$( document ).on( "keyup", "input[name*='pages_title']", function() { alert($(this).val()); });
Afin de sélectionner un élément par atsortingbut ayant une caractéristique spécifique, vous pouvez créer un nouveau sélecteur comme dans l’extrait de code suivant en utilisant un modèle de regex. L’utilisation de regex est destinée à rendre flexible le nouveau sélecteur autant que possible:
jQuery.extend(jQuery.expr[':'], { nameMatch: function (ele, idx, selector) { var rpStr = (selector[3] || '').replace(/^\/(.*)\/$/, '$1'); return (new RegExp(rpStr)).test(ele.name); } }); // // use of selector // $('input:nameMatch(/^pages_title\\[\\d\\]$/)').each(function(idx, ele) { console.log(ele.outerHTML); });