2010-08-19 11 views
5

J'ai un tableau d'entrées de texte comme celui-ci:Comment récupérer textbox valeur de tableau en utilisant javascript/jquery

<input type="textbox" name="mobileno[]"><br> 
<input type="textbox" name="mobileno[]"><br> 
<input type="textbox" name="mobileno[]"><br> 

Ils sont générés au moment de l'exécution à l'aide d'un bouton « ajouter ».

Existe-t-il un moyen que je peux utiliser jQuery pour récupérer la valeur d'entrée de texte et la transmettre dans une requête ajax?

J'ai créé une requête ajax mais je ne suis pas capable d'extraire la valeur du tableau d'entrée de texte dans le modèle name = value.

+0

* textbox * n'est pas une valeur correcte pour l'attribut * type *. Vous voulez simplement 'type =" text "'. –

+0

Heureusement, "text" est le type par défaut, et les types inconnus sont généralement considérés comme les valeurs par défaut, il semblera donc toujours fonctionner dans la plupart des navigateurs. Mais c'est juste un accident heureux. – cHao

Répondre

5

Vous pouvez faire comme ceci:

$('input[name="mobileno[]"]').each(function(){ 
    alert($(this).val()); 
}); 

Le ^= trouve des éléments dont le nom commence par texte mobileno et plus tard each est utilisé en boucle sur tous les éléments pour obtenir leur valeur.

Plus d'info:

+0

+1 pour la rapidité – PHP

+1

Pas besoin de "commence par le sélecteur".Il est absolument correct d'utiliser les crochets dans le sélecteur: '$ ('input [nom =" mobileno [] "]')' – RoToRa

1

Tout d'abord: Ce n'est pas un "tableau de zone de texte [es]". Il n'y a pas de tableau en HTML. Ce ne sont que des zones de texte multiples qui ont toutes le même nom, et ce nom a juste des crochets dans le nom. Les crochets dans le nom n'ont pas de signification particulière en HTML. (PHP a besoin d'eux, mais c'est une toute autre chose).

Deuxième: type="textbox" est faux. C'est juste type="text". Vous avez de la chance que cela fonctionne car "text" est la valeur par défaut à laquelle les navigateurs reviennent lorsqu'ils trouvent une valeur invalide telle que textbox.

Si vous avez besoin pour obtenir les Vales d'une forme dans le nom standard = modèle de valeur (séparés par &) jQuery fournit la méthode serialize pour les formes:

alert($("#your-form-id").serialize()); 

http://api.jquery.com/serialize/

+0

Je ne suis pas sûr si * serialize() * fonctionnerait ici, parce que la valeur du L'attribut * name * est uri-encoded, donc '[]' devient '% 5B% 5D'. –

+0

Est-ce que ça compte? J'aurais pensé que cela ne pouvait être qu'une bonne chose. – RoToRa

+0

Il n'y a pas de tableau en HTML, mais ** est ** en JavaScript. (Habituellement, quand vous traitez des 'tableaux' d'éléments, vous aurez en fait une liste de nœuds, mais cela fait rarement une grande différence). – Quentin

1

Essayez ceci:

var text= new Array(); 
$("input[name='mobileno[]']").each(function(){ 
    text.push($(this).val()); 
}); 

Si vous alertez le texte variable, vous obtiendrez la sortie séparée par des virgules.

1
var data = $('input[name="mobileno[]"]').map(function(){ 
    return this.name + '=' + this.value; 
}).get().join('&'); 
alert(data); 

cela vous donnera quelque chose comme mobileno[]=value&mobileno[]=value&mobileno[]=value. Vous pouvez ensuite le transmettre dans votre requête ajax.

Questions connexes