Newsgroup: it.comp.lang.javascript
Titolo: Estrarre dati da pagina con più form

Salve,
Ho una pagina con delle tab, in ogni tab c'è un form con il suo specifico tasto submit:
 
<li><a href="#tab1">test1</a></li>
<li><a href="#tab2">test2</a></li>
</ul>
<div id="tab1">
 <form action="" method="post" name="tab_1
	<textarea id="textboxcontent" ></textarea><br />
	<input type="text" value="http://" maxlength="1024" name="url" id="urlurl"><br />
 
	<input type="submit" value="Text Submit" class="send" id="tab_1" />
 </form>
</div>
 
 
<div id="tab2">
 <form action="" method="post" name="tab_2">
	<input type="text" value="http://" maxlength="1024" name="url" id="urlurl"><br />
	<input type="submit" value="Url Submit" class="send" id="tab_1" />
</form>
</div>
 
Ora ho bisogno di fare in modo che quando un utente clicca sulla tab1 e gli appare il form di catturare tutti i dati inseriti. Io ho provato in questo modo:
 
 $(".send").click(function(){
 
var element = $(this);
var Id = element.attr("id");
 
$("form#"+Id+" :input").each(function(){
 var input = $(this); 
});
 
});
 
Ma "input" risulta sempre vuoto. Avete qualche soluzione?
thx	

 Ma "input" risulta sempre vuoto. Avete qualche soluzione?
 
se vuoi il valore devi usare $(this).val();

 $("form#"+Id+" :input").each(function(){
 
Dato che l'id dei pulsanti di submit ï¿½ "tab_1", questa riga ti
cercherebbe gli elementi di una form avente come id "tab_1". Ma le tue
form non hanno affatto tale id ï¿½ e per fortuna, dato che gli id devono
essere univoci, quindi se ce l'ha il pulsante on puï¿½ avercelo la form ï¿½;
al piï¿½ hanno un `name` con tale valore. Ma questo selettore lavora sull'
id (#) non sul `name`.
 
Inoltre qui si ritorna al complicarsi la vita con jQuery inutilmente,
quando JS e il DOM di suo sono piï¿½ che sufficienti. Difatti, ogni
elemento form ha una proprietï¿½ ï¿½ chiamata appunto `form` ï¿½ che ti
restituisce la form di cui fa parte; quindi non hai neanche bisogno di
name o id. Inoltre ogni form ha una collection chiamata `elements`,
quindi puoi tranquillamente sintetizzare il tuo codice di prima in:
 
    $(".send").click(function() {
        var inputs = this.form.elements;
 
        $(inputs).each(function(){
            alert(this);
        })
    });
 
Se vuoi ottenere il valore ti basta `this.value`, e via dicendo. Non
creare un oggetto jQuery a meno che non ti serva veramente; ovvero che
ti semplifichi notevolmente il codice che avresti scritto a mano.
 

 ti semplifichi notevolmente il codice che avresti scritto a mano.
 
ciao e grazie per l'aiuto, ma comunque non credo si possa risolvere così il problema perché in quel modo quando un utente clicca sul submit oltre ad inviare gli input presenti in tab1 invia anche quelli in tab2, quindi io dovrei fare in modo che prende solo gli input presenti in tab1 o in tab2. Le tab comunque le creo con jquery ui: 
jqueryui.com/tabs/
 
Forse mi sono spiegato male io.
Comunque ecco il codice modificato come consigliato, ma non funziona: 
 
$(".send").click(function(){
    var Id = 
this.id
;
 
    $("form#"+Id+" :input").each(function(){
      console.log(this);
    }); 
 });
 
Quindi avrei bisogno di catturare gli input presenti in tab1 se l'utente clicca su bottone submit presente in tab1 e viceversa.
ciao, grazie

 id (#) non sul `name`.
 
Ok rilggendo questo per bene ho capito che dovevo mettere un id all form, scusa sono un pò incasinato, ho risolto comunque così, aggiungendo l'id alla form.
Tutto risolto.
grazie.

 Quindi avrei bisogno di catturare gli input presenti in tab1 se l'utente clicca su bottone submit presente in tab1 e viceversa.
 
Ed è quello che fa il codice qua sopra.
 

 Ok rilggendo questo per bene ho capito che dovevo mettere un id all form,
 
Uhm, no. :) Se metti l'id al form, come ti ho detto, finisci per avere
nella pagina due elementi con ID uguale (la form e il pulsante di
submit), che non ï¿½ codice HTML valido. Un id, per sua natura, deve
essere univoco.
 
Se usi l'approccio che ti ho consigliato, non hai bisogno nï¿½ di name nï¿½
di id o altro; e il codice diventa piï¿½ semplice e leggibile. Se leggi
bene i miei post, capirai come un elemento form sa giï¿½ a quale form
appartiene, senza bisogno di barbatrucchi, grazie alla proprietï¿½ `form`
dell'elemento stesso.